Flutter市场调研插件inbrain_surveys的使用
Flutter市场调研插件inbrain_surveys的使用
InBrain Flutter SDK
Survey库由inBrain.ai提供,用于货币化您的移动应用。
请参阅示例应用程序以获取集成示例。
查看文档:https://docs.inbrain.ai/docs/monetization-sdk/flutter-sdk
示例代码
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'models/reward.dart';
import 'screens/native_surveys.dart';
import 'screens/home.dart';
import 'theme.dart';
import 'package:inbrain_surveys/inbrain_surveys.dart';
import 'package:inbrain_surveys/types/types.dart';
import 'dart:async';
class InBrainExampleApp extends StatelessWidget {
const InBrainExampleApp({super.key});
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (context) => RewardModel(),
child: Builder(
builder: (context) {
final inbrainSurveysPlugin = InbrainSurveys();
runZoned(() {
inbrainSurveysPlugin.setOnSurveysClosedListener(
(bool closedByWebView, List<InBrainNativeReward>? rewards) {
inbrainSurveysPlugin.getRewards().then((rewards) {
final double total =
rewards.fold(0.0, (sum, item) => sum + item.amount);
Provider.of<RewardModel>(context, listen: false).add(total);
inbrainSurveysPlugin.confirmRewards(rewards);
});
});
});
return MaterialApp(
theme: inBrainTheme,
routes: <String, WidgetBuilder>{
'/': (BuildContext context) {
return const Home();
},
'/native-surveys': (BuildContext context) {
return const NativeSurveys();
}
},
);
},
),
);
}
}
void main() {
WidgetsFlutterBinding.ensureInitialized();
final inbrainSurveysPlugin = InbrainSurveys();
// 设置API客户端ID和密钥
inbrainSurveysPlugin.setInbrain(
apiClientId: 'The client ID provided in inBrain.ai dashboard',
clientSecret: 'The client secret provided in inBrain.ai dashboard');
// 设置用户唯一标识符
inbrainSurveysPlugin.setUserID('Uniq identifier of the user within your application');
// 设置导航栏配置
inbrainSurveysPlugin.setNavigationBarConfig(const InBrainNavbarConfig(
backgroundColor: Colors.red,
buttonsColor: Colors.green,
titleColor: Colors.blue,
title: 'inBrain.ai Surveys',
hasShadow: false,
));
// 设置状态栏配置
inbrainSurveysPlugin.setStatusBarConfig(const InBrainStatusBarConfig(
lightStatusBar: true, statusBarColor: Colors.orange));
runApp(const InBrainExampleApp());
}
完整示例代码解析
-
导入必要的库:
import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'models/reward.dart'; import 'screens/native_surveys.dart'; import 'screens/home.dart'; import 'theme.dart'; import 'package:inbrain_surveys/inbrain_surveys.dart'; import 'package:inbrain_surveys/types/types.dart'; import 'dart:async';
-
创建一个
InBrainExampleApp
类:class InBrainExampleApp extends StatelessWidget { const InBrainExampleApp({super.key}); @override Widget build(BuildContext context) { return ChangeNotifierProvider( create: (context) => RewardModel(), child: Builder( builder: (context) { final inbrainSurveysPlugin = InbrainSurveys(); runZoned(() { inbrainSurveysPlugin.setOnSurveysClosedListener( (bool closedByWebView, List<InBrainNativeReward>? rewards) { inbrainSurveysPlugin.getRewards().then((rewards) { final double total = rewards.fold(0.0, (sum, item) => sum + item.amount); Provider.of<RewardModel>(context, listen: false).add(total); inbrainSurveysPlugin.confirmRewards(rewards); }); }); }); return MaterialApp( theme: inBrainTheme, routes: <String, WidgetBuilder>{ '/': (BuildContext context) { return const Home(); }, '/native-surveys': (BuildContext context) { return const NativeSurveys(); } }, ); }, ), ); } }
-
在
main
函数中初始化插件并设置参数:void main() { WidgetsFlutterBinding.ensureInitialized(); final inbrainSurveysPlugin = InbrainSurveys(); // 设置API客户端ID和密钥 inbrainSurveysPlugin.setInbrain( apiClientId: 'The client ID provided in inBrain.ai dashboard', clientSecret: 'The client secret provided in inBrain.ai dashboard'); // 设置用户唯一标识符 inbrainSurveysPlugin.setUserID('Uniq identifier of the user within your application'); // 设置导航栏配置 inbrainSurveysPlugin.setNavigationBarConfig(const InBrainNavbarConfig( backgroundColor: Colors.red, buttonsColor: Colors.green, titleColor: Colors.blue, title: 'inBrain.ai Surveys', hasShadow: false, )); // 设置状态栏配置 inbrainSurveysPlugin.setStatusBarConfig(const InBrainStatusBarConfig( lightStatusBar: true, statusBarColor: Colors.orange)); runApp(const InBrainExampleApp()); }
更多关于Flutter市场调研插件inbrain_surveys的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter市场调研插件inbrain_surveys的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用inbrain_surveys
插件的代码示例。这个插件通常用于集成市场调研问卷功能。需要注意的是,具体的实现可能会根据插件的版本和API的更新有所变化,因此请确保查阅最新的官方文档以获取最新信息。
首先,你需要在pubspec.yaml
文件中添加inbrain_surveys
依赖:
dependencies:
flutter:
sdk: flutter
inbrain_surveys: ^latest_version # 请替换为最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,你可以在你的Flutter项目中初始化并使用inbrain_surveys
插件。以下是一个基本的示例:
import 'package:flutter/material.dart';
import 'package:inbrain_surveys/inbrain_surveys.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Inbrain Surveys Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
InbrainSurveys? _inbrainSurveys;
@override
void initState() {
super.initState();
// 初始化InbrainSurveys
_initInbrainSurveys();
}
Future<void> _initInbrainSurveys() async {
// 替换为你的实际API Key和其他配置
String apiKey = 'your_api_key_here';
String userId = 'user_id_here'; // 用户唯一标识符
_inbrainSurveys = InbrainSurveys(
apiKey: apiKey,
userId: userId,
listener: (InbrainSurveysEvent event) {
// 处理事件回调,例如问卷完成、错误等
if (event is InbrainSurveysCompletedEvent) {
print('Survey completed with response: ${event.response}');
} else if (event is InbrainSurveysErrorEvent) {
print('Survey error: ${event.error.message}');
}
},
);
// 检查是否有可用的问卷
await _inbrainSurveys!.checkSurveyAvailability();
// 如果问卷可用,可以显示问卷(通常根据业务逻辑在适当的时候调用)
// await _inbrainSurveys!.showSurvey();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Inbrain Surveys Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
// 在这里调用显示问卷的函数,根据业务逻辑在合适的时候触发
if (_inbrainSurveys != null && await _inbrainSurveys!.isSurveyAvailable()) {
await _inbrainSurveys!.showSurvey();
} else {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('No survey available at this time.')),
);
}
},
child: Text('Show Survey'),
),
),
);
}
@override
void dispose() {
// 释放资源
_inbrainSurveys?.dispose();
super.dispose();
}
}
在这个示例中,我们完成了以下步骤:
- 在
pubspec.yaml
文件中添加了inbrain_surveys
依赖。 - 在
MyApp
的home
属性中指定了MyHomePage
作为主页面。 - 在
MyHomePage
的initState
方法中初始化了InbrainSurveys
实例,并设置了事件监听器。 - 提供了一个按钮来触发问卷的显示,但显示问卷的逻辑被封装在了一个条件判断中,即只有在问卷可用时才显示。
- 在
dispose
方法中释放了InbrainSurveys
实例以避免内存泄漏。
请根据你的具体需求调整上述代码,并确保在实际应用中处理好用户隐私和数据安全的问题。