Flutter功能扩展插件butterfly_sdk_flutter_plugin的使用

Flutter功能扩展插件butterfly_sdk_flutter_plugin的使用

许可证: Apache 平台-Flutter 平台-iOS 平台-Android 平台-React Native

The Butterfly SDK 帮助您的应用参与到反对家庭暴力的斗争中。

安装

插件安装

您可以使用以下命令通过 pub.dev 安装插件:

butterfly_sdk_flutter_plugin: ^2.0.3

使用

为了在TheButterflySDK服务器上识别您的应用,您需要一个应用密钥。您可以通过代码设置它,如示例所示。

示例代码

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

import 'package:flutter/services.dart';
import 'package:butterfly_sdk_flutter_plugin/butterfly_sdk_flutter_plugin.dart';

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

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = '未知';

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  // 平台消息是异步的,因此我们在异步方法中初始化。
  Future<void> initPlatformState() async {
    String platformVersion;
    // 平台消息可能会失败,所以我们使用带有PlatformException处理的try/catch。
    // 我们还处理了消息可能返回null的情况。
    try {
      platformVersion = await ButterflySdk.platformVersion ?? '未知平台版本';
    } on PlatformException {
      platformVersion = '获取平台版本失败。';
    }

    // 如果在异步平台消息飞行期间小部件从树中移除,则我们想要丢弃回复而不是调用
    // setState来更新我们的不存在的外观。
    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    String imageFileName = "bf-logo.png";
    String imageRelativePath = "lib/res/img/$imageFileName";

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Butterfly SDK 示例应用'),
        ),
        body: Center(
          child: Text('运行于: $_platformVersion\n'),
        ),
        floatingActionButton: FloatingActionButton(
          child: Image(image: AssetImage(imageRelativePath)),
          onPressed: () {
            // 调用此方法将打开报告界面
            ButterflySdk.openReporter(withKey: "test-bfc4a19d-a4d4-4c82-8d55-dcd43a246a72");
          },
        ),
      ),
    );
  }
}

更多关于Flutter功能扩展插件butterfly_sdk_flutter_plugin的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter功能扩展插件butterfly_sdk_flutter_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中使用butterfly_sdk_flutter_plugin插件的代码案例。这个插件的具体功能可能会根据版本不同而有所变化,因此以下代码主要展示如何集成和使用一个假设的插件功能。请注意,你需要根据实际插件的文档进行调整。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  butterfly_sdk_flutter_plugin: ^x.y.z  # 请替换为实际版本号

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

2. 导入插件

在你的Dart文件中导入插件:

import 'package:butterfly_sdk_flutter_plugin/butterfly_sdk_flutter_plugin.dart';

3. 初始化插件

通常在应用的入口文件(如main.dart)中初始化插件:

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化插件
  ButterflySdkFlutterPlugin.instance.init().then((value) {
    print("Butterfly SDK initialized successfully");
    runApp(MyApp());
  }).catchError((error) {
    print("Failed to initialize Butterfly SDK: $error");
    runApp(ErrorApp()); // 自定义的错误处理页面
  });
}

4. 使用插件功能

假设butterfly_sdk_flutter_plugin提供了一个用于显示通知的功能,你可以这样使用:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Butterfly SDK Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              // 显示通知
              ButterflySdkFlutterPlugin.instance.showNotification(
                title: 'Hello',
                body: 'This is a notification from Butterfly SDK!',
              );
            },
            child: Text('Show Notification'),
          ),
        ),
      ),
    );
  }
}

5. 处理插件事件(可选)

如果插件提供了事件监听功能,比如用户交互的通知点击事件,你可以这样处理:

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化插件并设置事件监听器
  ButterflySdkFlutterPlugin.instance.init().then((value) {
    print("Butterfly SDK initialized successfully");
    
    // 设置通知点击事件监听器
    ButterflySdkFlutterPlugin.instance.setNotificationClickListener((notificationData) {
      print("Notification clicked: $notificationData");
      // 在这里处理通知点击事件,比如导航到某个页面
    });
    
    runApp(MyApp());
  }).catchError((error) {
    print("Failed to initialize Butterfly SDK: $error");
    runApp(ErrorApp());
  });
}

注意

  • 上述代码是基于假设的插件功能编写的,实际使用时需要参考butterfly_sdk_flutter_plugin的官方文档。
  • 插件版本号和具体方法可能会随着插件的更新而变化,请确保查阅最新的文档。
  • 如果插件需要原生代码支持(如Android和iOS平台特定的实现),还需要在相应的原生代码文件中进行配置。

通过上述步骤,你应该能够在Flutter项目中成功集成并使用butterfly_sdk_flutter_plugin插件。

回到顶部