如何从一个小部件导航到另一个小部件,例如android(flutter)中的片段?

时间:2020-05-21 16:41:34

标签: flutter android-fragments flutter-navigation

我的UI具有这样的结构:

TabBarView(children:[_Fragment1,_Fragment2...])

_Fragment1显示了我的用户的文件,我需要在带有后退堆栈的文件夹之间实现导航。我在_Fragment1中具有listview,并且单击item且item为文件夹时,应显示文件夹的文件(仅更改文件片段)。我试图使它像这样,但是失败了:

onTap: () => (_filesList[index].isFolder)
              ? Navigator.push(context, MaterialPageRoute(builder: (_) => _FilesListView(_filesList[index].children)))
              : null,

有没有像android中的片段一样容易的解决方案?也许有些软件包可以帮助做出这样的事情。

1 个答案:

答案 0 :(得分:0)

我在https://stackoverflow.com/a/52247870/10260006和此处Use nested Navigator with WillPopScope in Flutter找到了解决方案,但是我想补充一点,我只需要为此指定root命名的route和ongenerateroute

WillPopScope(
            onWillPop: () async {
              navigatorKey.currentState.maybePop();
              return false;
            },
            child: Navigator(
              key: navigatorKey,
              initialRoute: '/',
              onGenerateRoute: (settings) {
                return (settings.name == '/')
                    ? MaterialPageRoute(
                        builder: (context) => _FilesListView(filesList.where((file) => file.isShared == false).toList()),
                        settings: settings)
                    : null;
              },
            ),
          ),

进一步,您可以仅使用Navigator.of(context).push