flutter实用笔记

前言

写下这一篇文章是为了记录这段时间使用flutter 制作项目中一些比较常用的组件,以及具体怎么使用,获得怎样的效果。我使用的貌似是flutter4。由于官方更新迭代的差别比较明显,可能之后许多内容对应最新的flutter不适用,在此只供参考。望周知。

界面组件

顾名思义,用于前端书写界面的一些组件,有系统封装的,也可以自己在官网商城中下载,如果国内打不开的话,建议链接vpn。

一下界面组件下载地址

第三方插件官方下载地址

输入框

我使用到的输入框有两个,大体上是一样的。使用方式如一下代码,只用一点书写区别。

有时候,输入框需要输入许多内容,并且是他自动换行,如果手动设置的话,在界面中只显示一行。

这两个组件提供了一个变量maxLines 。 默认值为1

将其设置为null,即可自动换行,当然也可以设置为固定的行数。填入固定的整数就可以了。

TextField

在TextField中,是没有 initialValue 这个初始值的变量设置,但是可以使用其他的方式

使用controllerTextField 设置初始值,如下代码

dart 复制代码
TextField(
      style: TextStyle(fontSize: ScreenUtil().setSp(30)), //对展示的字体设置大小,这里使用了插件,对字体进行适配
       inputFormatters: [
         LengthLimitingTextInputFormatter(8),		//对输入作限制,这里只能输入8位数
         FilteringTextInputFormatter.allow(
             RegExp("[a-zA-Z]|[\u4e00-\u9fa5]|[0-9]"))			//对输入作限制,进行正则匹配,符合条件的才能输入进来。
       ],
       //initialValue: "展示这个组件时的初始值",			
       controller: TextEditingController(
              text: ""),
       onChanged: (value) {
         //输入时的事件
       },
       keyboardType: TextInputType.numberWithOptions(), 		//点击输入框后,展示的键盘或者输入法键盘为什么类型
       decoration: InputDecoration(
         border: OutlineInputBorder(),
         hintStyle: TextStyle(color: Colors.grey),
         contentPadding: EdgeInsets.fromLTRB(15.0, 0, 0, 15),
         hintText: '输入提示',
       ),
     )

TextFormField

dart 复制代码
TextFormField(
      style: TextStyle(fontSize: ScreenUtil().setSp(30)), //对展示的字体设置大小,这里使用了插件,对字体进行适配
       inputFormatters: [
         LengthLimitingTextInputFormatter(8),		//对输入作限制,这里只能输入8位数
         FilteringTextInputFormatter.allow(
             RegExp("[a-zA-Z]|[\u4e00-\u9fa5]|[0-9]"))			//对输入作限制,进行正则匹配,符合条件的才能输入进来。
       ],
       initialValue: "展示这个组件时的初始值",
       onChanged: (value) {
         //输入时的事件
       },
       keyboardType: TextInputType.numberWithOptions(), 		//点击输入框后,展示的键盘或者输入法键盘为什么类型
       decoration: InputDecoration(
         border: OutlineInputBorder(),
         hintStyle: TextStyle(color: Colors.grey),
         contentPadding: EdgeInsets.fromLTRB(15.0, 0, 0, 15),
         hintText: '输入提示',
       ),
     )

按钮

文字按钮 TextButton

只显示文字的按钮

图标按钮 IconButton

可以只展示一个图标

一般按钮 ElevatedButton

一个方框中有显示的文字

下列是按钮的普通写法,按钮事件在onPressed中,调整按钮的样式在style 中

dart 复制代码
 ElevatedButton(
    onPressed: () {},
     child: Text("按钮"),
     style: ButtonStyle(),
   )

有的需求,需要在某一时刻,使得按钮不可点击。我查阅了许多资料,网上很多文章都是说在按钮中,设置其isenable为false。

在之前的flutter中应该都是通过控制isenable的值,从而控制按钮的状态是否可以点击。但是在我使用的flutter版本中,按钮中并没有isenable这个值。只能使用一下方案。

将按钮事件中,设置为null。

dart 复制代码
 ElevatedButton(
    onPressed: null,
     child: Text("按钮"),
     style: ButtonStyle(),
   )

·

·

顶部appBar

AppBar 组件有许多功能,比如分页,也用到了这个,在此只记录其中三个功能,返回按钮、标题、标题右侧的组件

title 中是显示的顶部标题,在actions中,可以展示在顶部标题右侧的内容。可以是文字,下拉框、按钮等,具体不限制。因为他是一个

List 队列。

如果返回按钮没有任何其他的操作的话,就可以如下图这样写。

dart 复制代码
appBar: AppBar(title: Text(""), actions: []),

如果点击返回的时候需要进行其他的特殊操作。那么如下代码

dart 复制代码
appBar: AppBar(
    centerTitle: true,
     leading: IconButton(
         onPressed: () {
         //点击返回按钮
         },
         icon: Icon(Icons.arrow_back)),
     iconTheme: IconThemeData(color: Colors.blue),
     backgroundColor: Colors.white,
     elevation: 0,
     title: Text("标题", ),
     actions: [],
   )

leading 中写返回按钮,并且设置icon颜色。通过iconTheme 设置返回的按钮颜色

相关推荐
L、2185 分钟前
Flutter + OpenHarmony 分布式能力融合:实现跨设备 UI 共享与协同控制(终极篇)
javascript·分布式·flutter·ui·智能手机·harmonyos
d111111111d13 分钟前
STM32外设学习-读取芯片ID。(学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习
蒙奇D索大16 分钟前
【数据结构】考研408 | B树探秘:从查找操作到树高性能分析
数据结构·笔记·b树·考研·改行学it
TL滕18 分钟前
从0开始学算法——第十四天(数组与搜索练习)
笔记·学习·算法
松☆18 分钟前
终章:构建完整生态——Flutter + OpenHarmony 分布式应用开发全景指南(含性能调优与发布实践)
flutter·wpf
IMPYLH18 分钟前
Lua 的 xpcall 函数
开发语言·笔记·后端·游戏引擎·lua
庄雨山21 分钟前
Flutter Bloc 状态管理深度解析与开源鸿蒙 ArkUI 对标分析
flutter·bloc·openharmonyos
松☆21 分钟前
终极挑战:Flutter 应用在 OpenHarmony 上实现跨设备无缝流转(Continuation)与软总线协同
flutter·wpf
草莓熊Lotso21 分钟前
Python 基础语法完全指南:变量、类型、运算符与输入输出(零基础入门)
运维·开发语言·人工智能·经验分享·笔记·python·其他
晚霞的不甘21 分钟前
Flutter + OpenHarmony 发布与运维指南:从上架 AppGallery 到线上监控的全生命周期管理
运维·flutter·harmonyos