Flutter用户方向检测插件userorient_flutter的使用

发布于 1周前 作者 bupafengyu 来自 Flutter

Flutter用户方向检测插件userorient_flutter的使用

UserOrient.com 提供了一个用于收集用户反馈和优先级排序的功能投票板。以下是如何在Flutter项目中使用userorient_flutter插件的详细步骤。

获取开始

假设你已经在 UserOrient.com 创建了一个项目并获取了API密钥,按照以下步骤将SDK集成到你的Flutter应用中。

添加依赖

在你的 pubspec.yaml 文件中添加以下内容:

dependencies:
  userorient_flutter: <latest-version>

记得替换 <latest-version> 为最新的版本号。

初始化SDK

使用你的项目的API密钥和首选语言初始化SDK:

import 'package:userorient_flutter/userorient_flutter.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  UserOrient.configure(
    apiKey: 'YOUR_API_KEY',
    languageCode: 'en',
  );

  runApp(const MainApp());
}

显示功能投票板

要显示UserOrient投票板,调用 UserOrient.openBoard(context) 方法:

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

class HomePage extends StatelessWidget {
  const HomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SizedBox(
        width: double.infinity,
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ListTile(
              leading: const Icon(Icons.feedback),
              title: const Text('Feature requests'),
              subtitle: const Text('View and vote on feature requests'),
              onTap: () {
                UserOrient.setUser(
                  uniqueIdentifier: '123456',
                  fullName: 'Kamran Bekirov',
                  email: 'kamran[@userorient](/user/userorient).com',
                  phoneNumber: '+1234567890',
                  language: 'en',
                  extra: {
                    'age': 27,
                    'is_premium': true,
                  },
                );

                UserOrient.openBoard(context);
              },
            ),
            ListTile(
              leading: const Icon(Icons.logout),
              title: const Text('Logout'),
              onTap: () async {
                await UserOrient.clearCache();
              },
            ),
          ],
        ),
      ),
    );
  }
}

注意: 建议在每次打开投票板之前调用 UserOrient.setUser 以确保用户信息是最新的。

用户识别

UserOrient需要每个用户的唯一标识符 (uniqueIdentifier)。可以是电子邮件地址、电话号码或自定义ID。如果没有提供,UserOrient会生成一个随机标识符。

登出

当用户从你的应用中登出时,调用 UserOrient.clearCache() 防止潜在问题:

await UserOrient.clearCache();

联系方式

如果有任何问题或需要支持,请通过以下方式联系我们:


Made with 💙 by the UserOrient team

完整示例Demo

以下是完整的Flutter应用示例代码,展示了如何使用userorient_flutter插件:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  UserOrient.configure(
    apiKey: 'YOUR_API_KEY',
    languageCode: 'en',
  );

  runApp(const MainApp());
}

class MainApp extends StatelessWidget {
  const MainApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: const HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {
  const HomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('UserOrient Example')),
      body: SizedBox(
        width: double.infinity,
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ListTile(
              leading: const Icon(Icons.feedback),
              title: const Text('Feature requests'),
              subtitle: const Text('View and vote on feature requests'),
              onTap: () {
                UserOrient.setUser(
                  uniqueIdentifier: '123456',
                  fullName: 'Kamran Bekirov',
                  email: 'kamran[@userorient](/user/userorient).com',
                  phoneNumber: '+1234567890',
                  language: 'en',
                  extra: {
                    'age': 27,
                    'is_premium': true,
                  },
                );

                UserOrient.openBoard(context);
              },
            ),
            ListTile(
              leading: const Icon(Icons.logout),
              title: const Text('Logout'),
              onTap: () async {
                await UserOrient.clearCache();
              },
            ),
          ],
        ),
      ),
    );
  }
}

此示例包括了如何初始化插件、设置用户信息、打开投票板以及处理用户登出。希望这些信息能帮助你在Flutter项目中顺利集成和使用userorient_flutter插件。


更多关于Flutter用户方向检测插件userorient_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter用户方向检测插件userorient_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中集成和使用userorient_flutter插件的示例代码。这个插件通常用于检测用户设备的方向(如横屏或竖屏)。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  userorient_flutter: ^最新版本号  # 请替换为插件的最新版本号

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

2. 导入插件

在你的Dart文件中(通常是main.dart或其他UI组件文件),导入userorient_flutter插件:

import 'package:userorient_flutter/userorient_flutter.dart';

3. 初始化插件并监听方向变化

在你的Flutter应用中,你可以通过初始化插件并监听方向变化来检测用户设备的方向。以下是一个完整的示例代码:

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

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

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

class OrientationScreen extends StatefulWidget {
  @override
  _OrientationScreenState createState() => _OrientationScreenState();
}

class _OrientationScreenState extends State<OrientationScreen> {
  String _orientation = "Unknown";

  @override
  void initState() {
    super.initState();
    _initUserOrientation();
  }

  void _initUserOrientation() {
    UserOrientFlutter.getInstance().addListener(_orientationChanged);
    // 获取当前的方向(可选)
    UserOrientFlutter.getInstance().getOrientation().then((orientation) {
      setState(() {
        _orientation = orientation.toString();
      });
    });
  }

  void _orientationChanged(UserOrientFlutterOrientation orientation) {
    setState(() {
      _orientation = orientation.toString();
    });
  }

  @override
  void dispose() {
    UserOrientFlutter.getInstance().removeListener(_orientationChanged);
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('User Orientation Demo'),
      ),
      body: Center(
        child: Text(
          'Current Orientation: $_orientation',
          style: TextStyle(fontSize: 24),
        ),
      ),
    );
  }
}

解释

  1. 依赖添加:在pubspec.yaml中添加userorient_flutter依赖。
  2. 导入插件:在Dart文件中导入userorient_flutter
  3. 初始化插件:在initState方法中,通过UserOrientFlutter.getInstance().addListener添加监听器,以便在方向变化时更新UI。
  4. 获取当前方向:可选地在初始化时获取当前方向并更新UI。
  5. 处理方向变化:在_orientationChanged方法中更新UI以反映新的方向。
  6. 移除监听器:在dispose方法中移除监听器,以避免内存泄漏。

这样,你就可以在Flutter应用中检测用户设备的方向了。如果userorient_flutter插件的API有所不同,请参考其官方文档进行相应调整。

回到顶部