首页 > 其他分享 >Flutter 交互组件

Flutter 交互组件

时间:2024-05-22 14:07:39浏览次数:17  
标签:dialog flutter context 组件 交互 Flutter smart

目录

前言

现在主流的交互方式是Toast和Dialog。细分下来就是

  • message
    • info
    • success
    • error
    • warning
  • loading
  • confrim
  • input
  • select

这么多组件,纯自己手写肯定是不可能的,我个人的学习逻辑是能用框架就用框架。

fluttertoast 8.2.5

fluttertoast 8.2.5:https://pub.dev/packages/fluttertoast

FlutterToast只是一个简单的消息提示,实现的功能实在是太少了

flutter_smart_dialog

flutter_smart_dialog:https://pub.dev/packages/flutter_smart_dialog

flutter_smart_dialog是一个国人开发的组件,文档还是挺详细的

这一次,解决Flutter Dialog的各种痛点!:https://juejin.cn/post/7026150456673959943

flutter_smart_dialog 文档:https://xdd666t.github.io/flutter_use/web/index.html#/smartDialog

但是我用的时候不知道为什么,不能自动导包,重启了好几次都不行,很奇怪

快速开始

引入

dependencies:
  flutter_smart_dialog: ^4.9.3+2

初始化

import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage,
      // here
      navigatorObservers: [FlutterSmartDialog.observer],
      // here
      builder: FlutterSmartDialog.init(),
    );
  }
}

使用

      SmartDialog.showToast('test toast');

但是我用了一下,发现它没有把Confrim,Select,Input这三个常用的进行封装,所以我们还得用一下别的组件

Flutter 原生组件

Flutter-Dialog组件详解:https://juejin.cn/post/7036915754607837192
这部分我就之间上代码了,我这里用了异步封装了一下

import 'package:flutter/material.dart';

class MessageHelper {
  static Future<bool> Confrim(
      BuildContext context, String title, String message) async {
    var result = await showDialog(
        context: context,
        builder: (context) {
          return AlertDialog(
            title: Text(title),
            content: Text(message),
            actions: <Widget>[
              TextButton(
                  child: Text(
                    '取消',
                    style: TextStyle(color: Colors.grey),
                  ),
                  onPressed: () {
                    Navigator.pop(context, false);
                  }),
              TextButton(
                child: Text(
                  '确定',
                  style: TextStyle(color: Colors.blue),
                ),
                onPressed: () {
                  Navigator.pop(context, true);
                },
              ),
            ],
          );
        });
    result ??= false;
    return result as bool;
  }

  static Future<int> Select(
      BuildContext context, String title, List<String> choices) async {
    var children = <Widget>[];
    for(var i = 0;i < choices.length;i++){
      children.add(
        SimpleDialogOption(
          child: Text(choices[i]),
          onPressed: () {
            Navigator.pop(context, i);
          },
        ),
      );
      if(i != choices.length -1){
        children.add(Divider());
      }
    }
    var result = await showDialog(
        context: context,
        builder: (context) {
          return SimpleDialog(
            title: Text(title),
            children:children,
          );
        });
    result ??= -1;
    return result as int;
  }
}

总结

Flutter 的生态还是很多的,感觉还行,写代码的时候,编译通过了,一般不会出现什么异常的错误,还能接受。

标签:dialog,flutter,context,组件,交互,Flutter,smart
From: https://www.cnblogs.com/gclove2000/p/18205555

相关文章

  • 科研单位要在跨网文件交互时保护核心研究数据,该怎么做?
    科研单位是指专门从事科学研究的机构,包括基础研究、应用研究和开发研究等,以推动科技进步和经济发展,提高科研水平和技术创新能力。在我国科研单位类型多样,所发挥的主要作用也有所区别,一般主要包括以下几种:政府科研机构:由政府直接资助和管理的科研机构,主要任务是进行基础研究和应用......
  • 界面组件DevExpress WPF v23.2新版亮点:富文本编辑器、电子表格组件升级
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。DevExpressWPF控件日前正式发布了近期的一个重大......
  • 用python开发一个类似的交互查询系统.用什么库方便?
    大家好,我是Python进阶者。一、前言前几天在Python白银交流群【fashjon】问了一个Python库的问题,问题如下:用python开发一个类似的交互查询系统.用什么库方便?二、实现过程这里【啥也不懂】给了一个指导:PYQT~~~这里【kimi】也给了一个答案,具体如下:Flask:Flask是一个轻量级的......
  • 人机交互(团队软件评价)
    用户界面本软件用户界面简洁明了,功能键位突出,布局完善。  记住用户选择本软件可以记住最近识别的图片,在选取图片时会优先显示最近识别的图片和相机最近拍摄的图片短期刺激、长期使用的好处坏处 不要让用户犯错误相似功能键位放在较近的位置,不同功能的键位分割开来,并......
  • 鸿蒙HarmonyOS实战-Stage模型(卡片数据交互)
    ......
  • Unity查找物体和组件的方法
    一、找物体:①GameObject:a).Find(stringname)通过物体的名字查找b).FindWithTag(stringtag);通过标签获取添加该标签的一个物体c).FindObjectOfType();依据组件类型d).FindGameObjectsWithTag(stringtag)通过标签获取所有添加该标签的物体数组返回一个组合 ②Transform......
  • Flutter 学习笔记:再次重新学习Flutter
    目录前言相关链接环境安装常见问题环境编译成功分析项目程序入口Wiget动态更新按照教程初始化项目弱化Flutter编译检查添加第一个按钮快速嵌套组件化数据更新:ChangeNotifier和StatefulWidgetDart中的委托修改好的代码运行效果总结前言作为一个开发了一年多的Uniapp的.NET开发工......
  • form-create-designer中怎么扩展自定义组件
    form-create-designer中怎么扩展自定义组件form-create-designer是基于 @form-create/element-ui实现的表单设计器组件。可以通过拖拽的方式快速创建表单,提高开发者对表单的开发效率,节省开发者的时间。FormCreate官网:https://www.form-create.com帮助文档:https://pro.form-cr......
  • Shell编程之免交互
    目录1.HereDocument免交互2.HereDocument常规用法(1)免交互执行命令(2)免交互创建并编辑文件内容(3)tee3.Expect免交互4.编写expect免交互脚本步骤5.read1.HereDocument免交互使用I/O重定向的方式将命令列表提供给交互式程序标准输入的一种替代品命令<<标记...内容 #标记之......
  • 逻辑升级,深度解析如何实现业务中的且或组件
    在业务实现的过程中,时常会出现且或关系逻辑的拼接。逻辑运算的组合使用,是实现复杂业务规则和决策支持系统的关键技术。目前袋鼠云的指标管理平台、客户数据洞察平台、数据资产平台都有在使用。并且,且或组件已经在RC5.0中添加到组件库,企业现在可以更加灵活地构建和实施复杂的业......