Flutter如何为应用添加UIApplicationShortcutItem

在Flutter中如何为iOS应用添加UIApplicationShortcutItem实现3D Touch快捷菜单?我需要在应用的图标上添加快捷操作,但不知道如何在Flutter项目中配置这些动态和静态的快捷方式。请问具体需要修改哪些文件,是否需要使用原生代码实现?有没有完整的代码示例可以参考?

2 回复

在Flutter中,使用quick_actions插件为应用添加UIApplicationShortcutItem。步骤如下:

  1. 添加依赖到pubspec.yaml

    dependencies:
      quick_actions: ^0.5.0
    
  2. main.dart中初始化:

    import 'package:quick_actions/quick_actions.dart';
    
    void main() {
      final QuickActions quickActions = QuickActions();
      quickActions.initialize((String shortcutType) {
        // 处理快捷方式点击
      });
      quickActions.setShortcutItems(<ShortcutItem>[
        ShortcutItem(type: 'type1', localizedTitle: '标题1', icon: 'icon1'),
      ]);
      runApp(MyApp());
    }
    
  3. 在iOS的Info.plist中添加图标(可选)。

更多关于Flutter如何为应用添加UIApplicationShortcutItem的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中为应用添加 UIApplicationShortcutItem(iOS 主屏幕快捷操作,即 3D Touch 或长按菜单),可以通过以下步骤实现:

1. 使用第三方插件

由于 Flutter 本身不直接支持 iOS 原生快捷操作,推荐使用 quick_actions 插件:

dependencies:
  quick_actions: ^latest_version

运行 flutter pub get 安装。

2. 配置 iOS 原生端

ios/Runner/Info.plist 中添加以下内容,定义静态快捷操作:

<key>UIApplicationShortcutItems</key>
<array>
    <dict>
        <key>UIApplicationShortcutItemType</key>
        <string>action_one</string>
        <key>UIApplicationShortcutItemTitle</key>
        <string>快捷操作1</string>
        <key>UIApplicationShortcutItemSubtitle</key>
        <string>子标题</string>
        <key>UIApplicationShortcutItemIconType</key>
        <string>UIApplicationShortcutIconTypeSearch</string>
    </dict>
</array>

3. 在 Flutter 中初始化插件

main.dart 中设置快捷操作和点击处理:

import 'package:quick_actions/quick_actions.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  final QuickActions quickActions = QuickActions();
  
  // 设置动态快捷操作(可选)
  quickActions.setShortcutItems(<ShortcutItem>[
    const ShortcutItem(
      type: 'action_two',
      localizedTitle: '动态操作',
      icon: 'icon_home',
    ),
  ]);

  // 处理快捷操作点击
  quickActions.initialize((String shortcutType) {
    if (shortcutType == 'action_one') {
      print('静态操作触发');
    } else if (shortcutType == 'action_two') {
      print('动态操作触发');
    }
  });
  
  runApp(MyApp());
}

4. 注意事项

  • 静态快捷操作:通过 Info.plist 定义,应用安装后即存在。
  • 动态快捷操作:通过代码在运行时设置,可随时更新。
  • 点击快捷操作会启动应用,通过 initialize 回调处理对应逻辑(如跳转特定页面)。

5. 页面跳转示例

在回调中结合路由管理:

quickActions.initialize((String shortcutType) {
  if (shortcutType == 'action_one') {
    Navigator.pushNamed(context, '/details');
  }
});

完成以上步骤后,编译并安装应用,长按 iOS 主屏幕图标即可看到快捷操作菜单。

回到顶部