Flutter触觉反馈插件haptik_sdk的使用

Flutter触觉反馈插件haptik_sdk的使用

简介

这是HAPTIK SDK库在Flutter中的实现。

开始使用

要集成Haptik SDK,您必须获得以下凭据才能开始:

  1. 客户端ID/账户ID(必需):与您的账户关联的唯一Haptik识别号码。
  2. 商业ID(必需):唯一的商业识别号码。
  3. 基础URL(必需):指向特定服务器环境的链接(开发环境和生产环境不同)。
  4. 认证类型:用户注册时使用的认证类型。仅适用于自定义注册。
  5. 认证ID:用户注册时使用的认证ID。仅适用于自定义注册。

在Flutter项目中添加Haptik SDK

添加依赖

运行以下命令以将Haptik SDK添加到您的Flutter项目中:

flutter pub add haptik_sdk

这将在您的包的pubspec.yaml文件中添加如下行(并隐式运行flutter pub get):

dependencies:
  haptik_sdk: ^0.0.6

或者,您可以使用编辑器支持的flutter pub get功能。查看您的编辑器文档以了解更多信息。

导入依赖

在Dart代码中,您可以这样导入:

import 'package:haptik_sdk/haptik_sdk.dart';

设置凭证和环境

Haptik SDK将通过Android部分在您的Flutter项目中接收所需的凭证。您需要在以下路径下的strings.xml文件中添加这些信息: android/app/main/res/values 如果在values文件夹中没有strings.xml文件,则可以自行添加该文件。 在strings.xml文件中:

<resources>
    <string name="haptik_base_url">PROVIDED_BASE_URL</string>
    <string name="haptik_client_id">PROVIDED_CLIENT_ID</string>
    <string name="haptik_business_id">PROVIDED_BUSINESS_ID</string>
</resources>

发布此Flutter插件

所有Flutter插件都可以发布到pub.dev。在您的Flutter插件文件中,运行以下命令:

检查是否已准备好发布:

flutter pub publish --dry-run

如果所有检查都通过了,运行以下命令将插件发布到pub.dev

flutter pub publish

此项目是Flutter插件包的起点,这是一种包含Android和/或iOS平台特定实现代码的特殊包。

对于如何开始Flutter开发的帮助,请参阅在线文档,其中提供了教程、示例、移动开发指南以及完整的API引用。

示例代码

example/lib/main.dart

import 'package:flutter/material.dart';
import 'dart:async';
import 'package:haptik_sdk/InitData.dart';
import 'package:haptik_sdk/SignupData.dart';
import 'package:flutter/services.dart';
import 'package:haptik_sdk/haptik_sdk.dart';

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

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _successState = 'Unknown';
  final _haptikSdkPlugin = HaptikSdk();
  final initData = InitData();
  final signupData = SignupData();

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

  // 平台消息是异步的,因此我们在异步方法中初始化。
  Future<void> initPlatformState() async {
    // 平台消息可能会失败,所以我们使用try/catch处理PlatformException。
    // 我们还处理消息可能返回null的情况。

    // 如果小部件从树中被移除,而异步平台消息还在飞行中,我们希望丢弃回复而不是调用setState来更新我们的非存在的外观。
    String successState;
    successState = 'SDK is initialized';
    initData.setPrimaryColor = "#00FF00";
    initData.setComposerPlaceholder = "flutter_plugin_demo";
    initData.setInitializeLanguage = "hi";
    initData.setNoHeader = false;
    // try {
    //   successState = await _haptikSdkPlugin.initializeSDK() ?? 'SDK was not initialized';
    // } on PlatformException {
    //   successState = 'Failed to initialize SDK';
    // }
    setState(() {
      _successState = successState;
    });

    if (!mounted) return;
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: Column(
            children: <Widget>[
              Container(
                margin: EdgeInsets.all(25),
                child: TextButton(
                  child: Text('SignUp', style: TextStyle(fontSize: 20.0)),
                  onPressed: () async {
                    String successState;
                    try {
                      successState = await _haptikSdkPlugin.launchGuestConversation(initData) ?? 'Unknown success state';
                    } on PlatformException {
                      successState = 'Failed to launch guest conversation';
                    }
                    setState(() {
                      _successState = successState;
                    });
                  },
                ),
              ),
              Container(
                margin: EdgeInsets.all(25),
                child: TextButton(
                  child: Text('LogOut', style: TextStyle(fontSize: 20.0)),
                  onPressed: () {},
                ),
              ),
              Container(
                margin: EdgeInsets.all(25),
                child: Text('Running on: $_successState\n'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter触觉反馈插件haptik_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter触觉反馈插件haptik_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


haptik_sdk 是一个用于在 Flutter 应用中实现触觉反馈的插件。通过这个插件,你可以为你的应用添加振动反馈,提升用户体验。以下是如何在 Flutter 项目中使用 haptik_sdk 的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  haptik_sdk: ^1.0.0  # 请检查最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在你的 Dart 文件中导入 haptik_sdk

import 'package:haptik_sdk/haptik_sdk.dart';

3. 初始化插件

在使用 haptik_sdk 之前,通常需要进行初始化。可以在 main.dart 或应用启动时进行初始化:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await HaptikSdk.initialize();
  runApp(MyApp());
}

4. 使用触觉反馈

haptik_sdk 提供了多种触觉反馈效果,你可以根据需要使用不同的反馈类型。

以下是一些常见的触觉反馈示例:

轻触反馈 (Light Impact)

HaptikSdk.lightImpact();

中等触觉反馈 (Medium Impact)

HaptikSdk.mediumImpact();

强烈触觉反馈 (Heavy Impact)

HaptikSdk.heavyImpact();

选择反馈 (Selection Feedback)

HaptikSdk.selectionFeedback();

自定义振动

你还可以自定义振动模式和持续时间:

HaptikSdk.customVibration(duration: 500, amplitude: 100);

5. 示例代码

以下是一个简单的示例,展示如何在按钮点击时触发触觉反馈:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await HaptikSdk.initialize();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Haptik SDK Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: () {
                  HaptikSdk.lightImpact();
                },
                child: Text('Light Impact'),
              ),
              ElevatedButton(
                onPressed: () {
                  HaptikSdk.mediumImpact();
                },
                child: Text('Medium Impact'),
              ),
              ElevatedButton(
                onPressed: () {
                  HaptikSdk.heavyImpact();
                },
                child: Text('Heavy Impact'),
              ),
              ElevatedButton(
                onPressed: () {
                  HaptikSdk.selectionFeedback();
                },
                child: Text('Selection Feedback'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
回到顶部