Flutter用户反馈插件my_feedback的使用
Flutter用户反馈插件my_feedback的使用
目录
概述
my-feedback 是一个帮助开发者无缝收集用户反馈的 Flutter 插件。通过屏幕录制、截图标注和图库上传等功能,该插件简化了识别 Bug 和收集用户建议的过程。
功能
- 屏幕录制: 录制当前应用屏幕并附加到反馈报告中。
- 截图标注: 直接在应用内捕获并标注截图。
- 图库上传: 从用户的设备图库上传图片。
安装
在 pubspec.yaml
文件中添加插件依赖:
dependencies:
my_feedback: ^1.0.0
然后运行以下命令获取插件:
flutter pub get
Android 配置
- 在
AndroidManifest.xml
文件中添加以下权限:
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
-
确保您的应用目标 API 级别为 21 或更高。
-
在
AndroidManifest.xml
文件中添加以下服务配置:
<service
android:name="com.foregroundservice.ForegroundService"
android:foregroundServiceType="mediaProjection"/>
iOS 配置
- 在
Info.plist
文件中添加所需的权限说明:
<key>NSMicrophoneUsageDescription</key>
<string>此应用需要访问麦克风以录制反馈。</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>此应用需要访问相册以上传图片。</string>
使用方法
将 MyFeedback
包裹在您的 Material 或 Cupertino 应用中:
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MyFeedback(
child: MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
),
);
}
}
通过以下代码启动反馈并接收结果:
MyFeedbackCaller.showFeedbackModalWithResult(context, userId: "user_identifier@gmail.com", onResult: (value) {
log("数据可用 ${value?.toJson()}");
});
反馈结果返回类型:
- 截图类型:
uInt8List
字节 - 视频类型:
mp4
文件路径字符串 - 图片类型:
jpg
文件路径字符串
示例反馈结果 JSON 数据:
{
"email_id": "talk2destinyed@gmail.com",
"message": "hello",
"feedback_type": "bug",
"media": [
{"type": "screenshot", "url": [137, 80, 78, 71, 13, 10, 26]},
{"type": "video", "url": "/storage/emulated/0/Android/data/com.example.app/cache/my_feedback_record_234.mp4"},
{"type": "image", "url": "/data/user/0/com.example.app/cache/scaled_pq1hw8.jpg"}
]
}
示例
以下是完整的示例代码:
import 'dart:log';
import 'package:flutter/material.dart';
import 'package:my_feedback/my_feedback.dart';
import 'package:my_feedback/provider/feedback_provider.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MyFeedback(
child: MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'你已经按下了按钮这么多次:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headlineMedium,
),
const SizedBox(
height: 40,
),
TextButton(
onPressed: () {
setState(() {
_counter++;
});
},
child: Text("增加计数")),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: () async {
// 发送应用反馈
MyFeedbackCaller.showFeedbackModalWithResult(context, userId: "talk2destinyed@gmail.com", onResult: (value) {
log("数据可用 ${value?.toJson()}");
});
},
tooltip: '发送反馈',
child: const Icon(Icons.search),
),
);
}
}
更多关于Flutter用户反馈插件my_feedback的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter用户反馈插件my_feedback的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
my_feedback
是一个用于 Flutter 应用的用户反馈插件,它允许用户直接在应用中提交反馈、报告问题或提出建议。以下是如何使用 my_feedback
插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 my_feedback
插件的依赖:
dependencies:
flutter:
sdk: flutter
my_feedback: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 my_feedback
插件:
import 'package:my_feedback/my_feedback.dart';
3. 初始化插件
在使用 my_feedback
之前,通常需要对其进行初始化。你可以在 main.dart
文件中进行初始化:
void main() {
runApp(MyApp());
MyFeedback.initialize(
apiKey: 'YOUR_API_KEY', // 你的 API 密钥
projectId: 'YOUR_PROJECT_ID', // 你的项目 ID
);
}
4. 显示反馈界面
你可以通过调用 MyFeedback.showFeedback()
来显示反馈界面。通常,你可以在应用的某个按钮点击事件中调用这个方法:
ElevatedButton(
onPressed: () {
MyFeedback.showFeedback(
context: context,
title: 'Submit Feedback', // 反馈界面的标题
hintText: 'Describe your issue or suggestion...', // 输入框的提示文本
);
},
child: Text('Submit Feedback'),
);
5. 处理反馈
my_feedback
插件会自动将用户提交的反馈发送到你配置的后端服务。你可以在后端处理这些反馈,并根据需要进行响应。
6. 自定义配置(可选)
my_feedback
插件提供了一些可选的配置项,允许你自定义反馈界面的外观和行为。例如:
MyFeedback.showFeedback(
context: context,
title: 'Submit Feedback',
hintText: 'Describe your issue or suggestion...',
buttonText: 'Send', // 提交按钮的文本
buttonColor: Colors.blue, // 提交按钮的颜色
textColor: Colors.white, // 文本颜色
);
7. 处理回调(可选)
你还可以通过 onFeedbackSubmitted
回调来处理用户提交反馈后的操作:
MyFeedback.showFeedback(
context: context,
title: 'Submit Feedback',
hintText: 'Describe your issue or suggestion...',
onFeedbackSubmitted: (feedback) {
print('Feedback submitted: $feedback');
// 在这里处理反馈提交后的逻辑
},
);