Flutter快捷指令插件flutter_siri_shortcuts的使用

Flutter快捷指令插件flutter_siri_shortcuts的使用

flutter_siri_shortcuts 是一个用于在 Flutter 应用中集成 iOS 快捷指令的插件。

平台支持情况

Android iOS Linux macOS Web Windows
支持 NO 11.0+ NO Soon NO NO

使用方法

要使用此插件,只需将 flutter_siri_shortcuts 添加到您的 pubspec.yaml 文件中作为依赖项:

dependencies:
  flutter:
    sdk: flutter
  flutter_siri_shortcuts: ^版本号

示例代码

以下是一个简单的示例代码,展示如何在 Flutter 应用中使用 flutter_siri_shortcuts 插件。

示例代码:main.dart

import 'package:flutter/material.dart';
import 'package:flutter_siri_shortcuts/flutter_siri_shortcuts.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  late FlutterSiriShortcuts _flutterSiriShortcutsPlugin;

  [@override](/user/override)
  void initState() {
    super.initState();
    // 初始化插件并设置选项
    final options = FlutterSiriShortcutArgs(
      title: '测试',
      activityType: '任意活动',
      suggestedInvocationPhrase: '你好',
    );
    _flutterSiriShortcutsPlugin = FlutterSiriShortcuts(initOptions: options);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Flutter Siri 快捷指令示例'),
        ),
        body: Container(
          margin: const EdgeInsets.symmetric(vertical: 20),
          child: Column(
            children: [
              const SizedBox(
                height: 100,
              ),
              Center(
                child: AddToSiriButton(
                  title: '添加到Siri',
                  id: 'test1',
                  url: 'https://someurl.com',
                ),
              ),
              const SizedBox(
                height: 50,
              ),
              ElevatedButton(
                onPressed: () async {
                  try {
                    // 展示快捷指令
                    _flutterSiriShortcutsPlugin.presentShortcut();
                  } on PlatformException {
                    print('展示快捷指令失败');
                  }
                },
                child: const Text('展示快捷指令示例'),
              ),
              const SizedBox(
                height: 50,
              ),
              ElevatedButton(
                onPressed: () async {
                  try {
                    // 捐赠快捷指令
                    _flutterSiriShortcutsPlugin.donateShortcut();
                  } on PlatformException {
                    print('捐赠快捷指令失败');
                  }
                },
                child: const Text('捐赠快捷指令示例'),
              ),
              const SizedBox(
                height: 50,
              ),
              ElevatedButton(
                onPressed: () {
                  try {
                    // 清除所有快捷指令
                    _flutterSiriShortcutsPlugin.clearShortcuts();
                  } on PlatformException {
                    print('清除快捷指令失败');
                  }
                },
                child: const Text('清除所有快捷指令示例'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter快捷指令插件flutter_siri_shortcuts的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter快捷指令插件flutter_siri_shortcuts的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中集成和使用flutter_siri_shortcuts插件的一个基本示例。这个插件允许你为你的Flutter应用创建和管理快捷指令(Siri Shortcuts)。

1. 添加依赖

首先,你需要在pubspec.yaml文件中添加flutter_siri_shortcuts依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_siri_shortcuts: ^0.4.0  # 请检查最新版本号

然后运行flutter pub get来安装依赖。

2. 配置iOS项目

由于Siri Shortcuts是iOS特有的功能,你需要在ios/Runner/Info.plist中添加必要的配置来支持快捷指令。通常,这个插件会自动处理大部分配置,但你可能需要确保你的Info.plist包含以下内容(如果插件没有自动添加):

<key>NSSiriUsageDescription</key>
<string>This app uses Siri Shortcuts</string>

3. 初始化快捷指令

在你的Flutter应用中,你需要初始化快捷指令。下面是一个简单的示例,展示如何创建一个快捷指令并在应用中注册它。

import 'package:flutter/material.dart';
import 'package:flutter_siri_shortcuts/flutter_siri_shortcuts.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Siri Shortcuts Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  void initState() {
    super.initState();
    _setupSiriShortcuts();
  }

  Future<void> _setupSiriShortcuts() async {
    final SiriShortcuts siriShortcuts = SiriShortcuts();

    // 定义一个快捷指令
    final MyShortcutAction action = MyShortcutAction(
      title: 'Open My Page',
      subtitle: 'Navigate to the main page of the app',
      identifier: 'com.example.myapp.open_my_page',
    );

    // 注册快捷指令
    try {
      await siriShortcuts.suggestShortcuts([action]);
      print('Siri Shortcuts set up successfully.');
    } catch (e) {
      print('Failed to set up Siri Shortcuts: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Siri Shortcuts Demo'),
      ),
      body: Center(
        child: Text('Check Siri Shortcuts settings to see the custom shortcut.'),
      ),
    );
  }
}

// 定义一个快捷指令动作类
class MyShortcutAction extends SiriShortcutAction {
  MyShortcutAction({required String title, required String subtitle, required String identifier})
      : super(
            title: title,
            subtitle: subtitle,
            identifier: identifier,
            isUserCreated: false, // 这个快捷指令是不是由用户创建的
            inputs: []); // 输入参数,这里为空

  @override
  Future<void> performAction() async {
    // 这里是执行快捷指令时的代码
    // 例如,导航到应用的某个页面
    print('Shortcut executed: ${this.title}');
  }
}

4. 处理快捷指令的触发

为了处理用户通过Siri触发的快捷指令,你需要在你的应用入口(通常是main.dart中的MaterialAppCupertinoApp)添加对快捷指令回调的处理。

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  SiriShortcuts.instance.configure().then((_) {
    SiriShortcuts.instance.onShortcutActivated.listen((SiriShortcutAction shortcut) async {
      if (shortcut is MyShortcutAction) {
        // 处理快捷指令的逻辑
        await shortcut.performAction();
      }
    });
    runApp(MyApp());
  });
}

请注意,上述代码片段假设你已经有一个MyShortcutAction类,该类扩展了SiriShortcutAction并实现了performAction方法。

结论

以上示例展示了如何在Flutter应用中集成和使用flutter_siri_shortcuts插件来创建和管理Siri快捷指令。请根据你的具体需求调整快捷指令的动作和逻辑。

回到顶部