Можно ли переместить виджет Draggable в диалоговом окне на DragTarget в фоновом режиме? - PullRequest
0 голосов
/ 06 апреля 2020

Я довольно новичок во Flutter и все еще пытаюсь понять взаимодействие между классами и виджетами. Для моего текущего проекта я хочу «перетащить» Draggable, который находится в диалоговом окне, а затем переместить его из диалогового окна в DragTarget, который находится за диалоговым окном.

В настоящее время у меня есть три класса, DragIconComponent, MenuComponent и MainPage. Диалоговое окно находится в MenuComponent. Я знаю, что это очень неортодоксальный метод работы с перетаскиваемыми элементами между классами, и все, что я пытаюсь до сих пор, не работает, так как DragTarget блокируется фоном (?) Диалогового окна.

Вот где мой виджет Draggable:

class DragIconComponentState extends State<DragIconComponent> {

  Widget _menuIcon() {
    return Container(
       child: Image.asset(...)
    );
  }

  Widget _disabledMenuIcon() {
    return Container(
       child: Image.asset(...) 
    );
  }

  @override
  Widget build(BuildContext context) {
    return Draggable(
        child: _menuIcon(),
      ),
      feedback: _menuIcon(),
      childWhenDragging: _disabledMenuIcon(),
      onDragCompleted: () {
        Navigator.of(context, rootNavigator: true).pop();
      },      
    );
  }
}

И я собираюсь переместить виджет Draggable на главную страницу:

class _MainPageState extends State<MainPage> {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        height: MediaQuery.of(context).size.height,
        width: MediaQuery.of(context).size.width,
        color: Palette.black,
        child: DragTarget(
          builder: (BuildContext context, List<dynamic> accepted, List<dynamic> rejected) {
              ...................
          },
        ),
      ),
    );
  }
}

Я бы Хотелось бы узнать, возможно ли реализовать то, что я пытаюсь сделать, и если нет, возможно, есть обходной путь, который может достичь того же эффекта?

Заранее спасибо.

...