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();
  }
}

在这个示例中,我们完成了以下步骤:

  1. pubspec.yaml文件中添加了inbrain_surveys依赖。
  2. MyApphome属性中指定了MyHomePage作为主页面。
  3. MyHomePageinitState方法中初始化了InbrainSurveys实例,并设置了事件监听器。
  4. 提供了一个按钮来触发问卷的显示,但显示问卷的逻辑被封装在了一个条件判断中,即只有在问卷可用时才显示。
  5. dispose方法中释放了InbrainSurveys实例以避免内存泄漏。

请根据你的具体需求调整上述代码,并确保在实际应用中处理好用户隐私和数据安全的问题。

回到顶部