如何在flutter中使用quick_actions官方插件打开特定屏幕?

时间:2019-04-01 04:48:57

标签: dart flutter dart-pub

我在项目中实现了Quick_actions插件,我想打开一个特定的屏幕,但是在快速处理程序功能中,导航器不起作用。虽然是Try-Catch,但异常显示上下文showld来自导航器,但是我使用的是我的MaterialApp的navigatorKey的上下文。

如果我将其他任何功能(例如print('some text')都起作用了,则仅当我尝试使用导航器时才会出现问题

创建快速操作并添加处理程序功能

createQuickActions() {
    quickActions.initialize(
      (String shortcutId) {
        switch (shortcutId) {
          case 'settings':
            try {
              Navigator.push(
                MyApp.navigatorKey.currentContext,
                MaterialPageRoute(
                  builder: (context) => SettingsScreen(sistemas),
                ),
              );
            } catch (e) {
              print(e);
            }
            print('selected: $shortcutId');
          break;
        }
      }
    );
  }

初始化快速操作

 quickActions.setShortcutItems(
      <ShortcutItem>[
        const ShortcutItem(
          type: 'settings',
          localizedTitle: 'settings',
          icon: 'settings',
        ),
     ],
   );

所有这些代码都保存在我的SplashScreen中,因为该插件的文档说应该处于应用的早期状态

我希望该应用程序打开settings screenprint 'settings',但是如果该应用程序已经打开,那么它将打开main screenprint 'settings',但如果没有打开,它将尝试打开某些内容然后关闭自身(不是force close消息)

1 个答案:

答案 0 :(得分:1)

在以下示例中, 快速使用MainView将打开“登录”小组件,然后直接单击应用将打开“主页”小组件

您可以参考https://www.filledstacks.com/snippet/managing-quick-actions-in-flutter/了解详情

完整代码

if(stats contains approve)
List = List.dbset.where(x => x.id.stats == approved);

enter image description here