Flutter振动控制插件flutter_vibrate_ohos的使用

A Flutter插件用于控制设备振动。

使用方法

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

dependencies:
  flutter_vibrate: 1.3.0
  flutter_vibrate_ohos: 1.0.0

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

振动反馈

该插件提供了多种振动反馈类型,可以通过以下枚举选择:

// 可用的反馈类型
enum FeedbackType {
  success,       // 成功反馈
  error,         // 错误反馈
  warning,       // 警告反馈
  selection,     // 选择反馈
  impact,        // 冲击反馈
  heavy,         // 重反馈
  medium,        // 中等反馈
  light          // 轻反馈
}

使用示例:

Vibrate.feedback(FeedbackType.impact);

完整示例代码

以下是一个完整的示例代码,展示如何在Flutter应用中使用flutter_vibrate_ohos插件来控制振动:

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

void main() => runApp(const MyApp());

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

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

class _MyAppState extends State<MyApp> {
  bool _canVibrate = true;
  final Iterable<Duration> pauses = [
    const Duration(milliseconds: 500),
    const Duration(milliseconds: 1000),
    const Duration(milliseconds: 500),
  ];

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

  Future<void> _init() async {
    bool canVibrate = await Vibrate.canVibrate;
    setState(() {
      _canVibrate = canVibrate;
      _canVibrate
          ? debugPrint('This device can vibrate')
          : debugPrint('This device cannot vibrate');
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Haptic Feedback Example')),
        body: Center(
          child: ListView(children: [
            ListTile(
              title: const Text('Vibrate'),
              leading: const Icon(Icons.vibration, color: Colors.teal),
              onTap: () {
                if (_canVibrate) Vibrate.vibrate;
              },
            ),
            ListTile(
              title: const Text('Vibrate with Pauses'),
              leading: const Icon(Icons.vibration, color: Colors.brown),
              onTap: () {
                if (_canVibrate) {
                  Vibrate.vibrateWithPauses(pauses);
                }
              },
            ),
            const Divider(height: 1),
            ListTile(
              title: const Text('Impact'),
              leading: const Icon(Icons.tap_and_play, color: Colors.orange),
              onTap: () {
                if (_canVibrate) {
                  Vibrate.feedback(FeedbackType.impact);
                }
              },
            ),
            ListTile(
              title: const Text('Selection'),
              leading: const Icon(Icons.select_all, color: Colors.blue),
              onTap: () {
                if (_canVibrate) {
                  Vibrate.feedback(FeedbackType.selection);
                }
              },
            ),
            ListTile(
              title: const Text('Success'),
              leading: const Icon(Icons.check, color: Colors.green),
              onTap: () {
                if (_canVibrate) {
                  Vibrate.feedback(FeedbackType.success);
                }
              },
            ),
            ListTile(
              title: const Text('Warning'),
              leading: const Icon(Icons.warning, color: Colors.red),
              onTap: () {
                if (_canVibrate) {
                  Vibrate.feedback(FeedbackType.warning);
                }
              },
            ),
            ListTile(
              title: const Text('Error'),
              leading: const Icon(Icons.error, color: Colors.red),
              onTap: () {
                if (_canVibrate) {
                  Vibrate.feedback(FeedbackType.error);
                }
              },
            ),
            const Divider(height: 1),
            ListTile(
              title: const Text('Heavy'),
              leading: const Icon(Icons.notification_important, color: Colors.red),
              onTap: () {
                if (_canVibrate) {
                  Vibrate.feedback(FeedbackType.heavy);
                }
              },
            ),
            ListTile(
              title: const Text('Medium'),
              leading: const Icon(Icons.notification_important, color: Colors.green),
              onTap: () {
                if (_canVibrate) {
                  Vibrate.feedback(FeedbackType.medium);
                }
              },
            ),
            ListTile(
              title: const Text('Light'),
              leading: Icon(Icons.notification_important, color: Colors.yellow[700]),
              onTap: () {
                if (_canVibrate) {
                  Vibrate.feedback(FeedbackType.light);
                }
              },
            ),
          ]),
        ),
      ),
    );
  }
}

更多关于Flutter振动控制插件flutter_vibrate_ohos的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter振动控制插件flutter_vibrate_ohos的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_vibrate_ohos 是一个用于在 Flutter 应用中控制振动的插件,特别适用于 OpenHarmony (OHOS) 平台。通过这个插件,你可以在应用中实现振动的触发和控制。以下是如何使用 flutter_vibrate_ohos 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  flutter_vibrate_ohos: ^最新版本

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

2. 导入插件

在你的 Dart 文件中导入 flutter_vibrate_ohos 插件:

import 'package:flutter_vibrate_ohos/flutter_vibrate_ohos.dart';

3. 使用插件

flutter_vibrate_ohos 插件提供了几种方法来控制振动:

3.1 简单振动

你可以使用 Vibrate.vibrate() 方法来触发一次简单的振动:

void triggerVibration() async {
  await Vibrate.vibrate();
}

3.2 自定义振动模式

你还可以使用 Vibrate.vibrateWithPattern() 方法来触发自定义振动模式。振动模式由两个列表组成:patternintensities

  • pattern:表示振动和暂停的时间间隔(以毫秒为单位)。
  • intensities:表示振动的强度(0 到 255 之间的整数)。
void triggerCustomVibration() async {
  List<int> pattern = [500, 1000, 500, 1000]; // 振动和暂停的时间间隔
  List<int> intensities = [255, 0, 255, 0];   // 振动的强度
  await Vibrate.vibrateWithPattern(pattern, intensities);
}

3.3 停止振动

你可以使用 Vibrate.cancel() 方法来停止当前的振动:

void stopVibration() async {
  await Vibrate.cancel();
}

4. 检查振动支持

在触发振动之前,你可以检查设备是否支持振动:

void checkVibrationSupport() async {
  bool canVibrate = await Vibrate.canVibrate;
  if (canVibrate) {
    print("设备支持振动");
  } else {
    print("设备不支持振动");
  }
}

5. 示例代码

以下是一个完整的示例代码,展示了如何使用 flutter_vibrate_ohos 插件:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Vibrate OHOS Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              ElevatedButton(
                onPressed: () async {
                  bool canVibrate = await Vibrate.canVibrate;
                  if (canVibrate) {
                    await Vibrate.vibrate();
                  } else {
                    print("设备不支持振动");
                  }
                },
                child: Text('简单振动'),
              ),
              ElevatedButton(
                onPressed: () async {
                  bool canVibrate = await Vibrate.canVibrate;
                  if (canVibrate) {
                    List<int> pattern = [500, 1000, 500, 1000];
                    List<int> intensities = [255, 0, 255, 0];
                    await Vibrate.vibrateWithPattern(pattern, intensities);
                  } else {
                    print("设备不支持振动");
                  }
                },
                child: Text('自定义振动'),
              ),
              ElevatedButton(
                onPressed: () async {
                  await Vibrate.cancel();
                },
                child: Text('停止振动'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
回到顶部