前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flutter-Dart Dialog的简单封装与TTS的使用

Flutter-Dart Dialog的简单封装与TTS的使用

作者头像
老猫-Leo
发布2023-12-11 20:35:14
3690
发布2023-12-11 20:35:14
举报
文章被收录于专栏:前端大全前端大全

之前开发时发现,Flutter 原生的 showDialog 虽然挺方便,但是仅适用于提示或者关闭后不用做任何处理的时候,如果增加一些事件或者需要传递结果判断时,就很容易因为结果为null而出现bug,所以我进行了一层比较不理智的封装哈哈。

另外记录一下 flutter_tts 的简单使用,后面用到比较多。

showDialog Dialog

代码语言:javascript
复制
/// showDialog 不理智封装 (╯‵□′)╯︵┻━┻
static Future showConfirm({
    BuildContext context,
    String title,
    Widget content,
    String cancelText,
    String confirmText,
    Function onCancel,
    Function onConfirm,
    AlertDialog Function(BuildContext context) builder
  }) async {
  var flag = await showDialog(
    context: context,
    builder: (BuildContext context) {
      return AlertDialog(
        title: title != null && title.isNotEmpty ? Text(title) : null,
        content: content,
        actions: <Widget>[
          TextButton(
            onPressed: () => Navigator.of(context).pop(false),
            child: Text(cancelText ?? 'Cancel'),
          ),
          TextButton(
            onPressed: () => Navigator.of(context).pop(true),
            child: Text(confirmText ?? 'Confirm'),
          )
        ]
      );
    }
  );
  if (flag != null && flag) {
    onConfirm();
  } else if (onCancel != null) {
    onCancel();
  }
}

flutter_tts plugin TTS

  • 首先在 pubspec.yaml 配置插件 flutter_tts
代码语言:javascript
复制
dependencies:
  flutter_tts: ^3.1.0
  • 添加初始化插件类
代码语言:javascript
复制
import 'package:flutter_tts/flutter_tts.dart';

class TTSUtil {
  TTSUtil._();
  static TTSUtil _manager;
  factory TTSUtil() {
    if (_manager == null) {
      _manager = TTSUtil._();
    }
    return _manager;
  }
  FlutterTts flutterTts;

  initTTS() {
    flutterTts = FlutterTts();
  }

  Future speak(String text) async {
    /// 设置语言
    await flutterTts.setLanguage("zh-CN");
    // 需配置中文语音包,若没有请自行下载,讯飞语音包亲测可用。
    // 本站下载地址 {root}/dart_tts_confirm/kdxf_tts.apk

    /// 设置音量
    await flutterTts.setVolume(0.8);

    /// 设置语速
    await flutterTts.setSpeechRate(0.5);

    /// 音调
    await flutterTts.setPitch(1.0);

    if (text != null) {
      if (text.isNotEmpty) {
        await _stop();
        await flutterTts.speak(text);
      }
    }
  }

  /// 暂停
  Future _pause() async {
    await flutterTts.pause();
  }

  /// 结束
  Future _stop() async {
    await flutterTts.stop();
  }
}
  • 初始化并使用,建议使用缓存保存对象,全局使用。
代码语言:javascript
复制
var Ttser = new TTSUtil();
Ttser.initTTS();

Ttser.speak('你好,世界!hello world!');
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • showDialog Dialog
  • flutter_tts plugin TTS
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档