Flutter 常用的 Material 组件及其相关属性

Flutter 中的 Material 组件库提供了一系列用于构建漂亮的 Material Design 风格用户界面的组件。下面是一些常用的 Material 组件及其相关属性的介绍:

  1. AppBar(应用栏)

    • title: 应用栏的标题。
    • actions: 应用栏的操作按钮。
    • backgroundColor: 背景颜色。
    • elevation: 阴影的高度。
    • bottom: 应用栏底部的控件。
     import 'package:flutter/material.dart';void main() {runApp(MyApp());}class MyApp extends StatelessWidget {Widget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: Text('My App'),actions: <Widget>[IconButton(icon: Icon(Icons.search),onPressed: () {// 执行搜索操作},),IconButton(icon: Icon(Icons.settings),onPressed: () {// 打开设置页面},),],),body: Center(child: Text('Hello, World!'),),),);}}
    
  2. Button(按钮)

    • onPressed: 按钮被点击时触发的回调函数。
    • child: 按钮上显示的内容。
    • color: 按钮的颜色。
    • textColor: 按钮文字的颜色。
    ElevatedButton(onPressed: () {// 按钮点击事件},child: Text('Click Me'),
    )
    
  3. TextField(文本输入框)

    • controller: 控制器,用于控制输入框的文本。
    • decoration: 输入框的装饰,包括提示文本、边框等。
    • onChanged: 文本变化时的回调函数。
    • keyboardType: 键盘类型。
    TextField(decoration: InputDecoration(hintText: 'Enter your name',),onChanged: (value) {// 文本变化时的操作},
    )
    
  4. Card(卡片)

    • child: 卡片中的内容组件。
    • elevation: 阴影的高度。
    • shape: 卡片的形状。
    Card(elevation: 4,child: ListTile(leading: Icon(Icons.album),title: Text('Title'),subtitle: Text('Subtitle'),onTap: () {// 点击卡片的操作},),
    )
    
  5. Drawer(抽屉菜单)

    • child: 抽屉中的内容组件。
    • elevation: 阴影的高度。
    Drawer(child: ListView(padding: EdgeInsets.zero,children: <Widget>[DrawerHeader(child: Text('Drawer Header'),decoration: BoxDecoration(color: Colors.blue,),),ListTile(title: Text('Item 1'),onTap: () {// 第一个菜单项的操作},),ListTile(title: Text('Item 2'),onTap: () {// 第二个菜单项的操作},),],),
    )
    
  6. BottomNavigationBar(底部导航栏)

    • items: 导航栏的条目。
    • currentIndex: 当前选中的条目索引。
    • onTap: 点击条目时触发的回调函数。
    int _selectedIndex = 0;
    Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('BottomNavigationBar Demo'),),body: Center(child: Text('Index $_selectedIndex'),),bottomNavigationBar: BottomNavigationBar(currentIndex: _selectedIndex,onTap: (index) {setState(() {_selectedIndex = index;});},items: [BottomNavigationBarItem(icon: Icon(Icons.home),label: 'Home',),BottomNavigationBarItem(icon: Icon(Icons.search),label: 'Search',),BottomNavigationBarItem(icon: Icon(Icons.person),label: 'Profile',),],),);
    }
    
  7. AlertDialog(警告对话框)

    • title: 对话框的标题。
    • content: 对话框的内容。
    • actions: 对话框的操作按钮。
    ElevatedButton(onPressed: () {showDialog(context: context,builder: (context) => AlertDialog(title: Text('Alert'),content: Text('This is an alert dialog.'),actions: <Widget>[TextButton(child: Text('OK'),onPressed: () {Navigator.pop(context);},),],),);},child: Text('Show Alert'),
    )
    
  8. ListView(列表视图)

    • children: 列表中的子组件列表。
    • itemBuilder: 用于动态构建列表项的函数。
    • scrollDirection: 滚动方向。
    • separatorBuilder: 列表项之间的分隔符构建器。
    ListView.builder(itemCount: 10,itemBuilder: (context, index) {return ListTile(title: Text('Item $index'),onTap: () {// 点击列表项的操作},);},
    )
    
  9. PopupMenuButton(弹出菜单按钮)

    • itemBuilder: 弹出菜单项的构建器。
    • onSelected: 菜单项被选中时的回调函数。
    PopupMenuButton<String>(itemBuilder: (context) => [PopupMenuItem(value: 'item1',child: Text('Item 1'),),PopupMenuItem(value: 'item2',child: Text('Item 2'),),],onSelected: (value) {// 选择菜单项的操作},
    )
    
  10. SnackBar(消息提示条)

    • content: 提示条中显示的内容。
    • action: 可选操作按钮。
    • duration: 显示时间。
    ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('Hello, Snackbar!'),action: SnackBarAction(label: 'Undo',onPressed: () {// 撤销操作},),),
    )
    
  11. Slider(滑块)

    • value: 滑块的当前值。
    • onChanged: 值变化时的回调函数。
    • minmax: 滑块的最小值和最大值。
    Slider(value: 0.5,onChanged: (newValue) {// 滑动滑块的操作},min: 0,max: 1,
    )
    
  12. Dialog(对话框)

    • child: 对话框的内容组件。
    • backgroundColor: 对话框的背景颜色。
    • elevation: 对话框的阴影高度。
    showDialog(context: context,builder: (context) => AlertDialog(title: Text('Alert'),content: Text('This is an alert dialog.'),actions: <Widget>[TextButton(child: Text('OK'),onPressed: () {Navigator.pop(context);},),],),
    )
    
  13. Switch(开关)

    • value: 开关的当前值。
    • onChanged: 值变化时的回调函数。
    • activeColor: 开启状态时的颜色。
    Switch(value: true,onChanged: (newValue) {// 开关状态变化的操作},
    )
    
  14. TabBar(选项卡栏)

    • tabs: 选项卡的列表。
    • controller: 用于控制选项卡的控制器。
    • indicatorColor: 选项卡指示器的颜色。
    DefaultTabController(length: 2,child: Scaffold(appBar: AppBar(bottom: TabBar(tabs: [Tab(text: 'Tab 1'),Tab(text: 'Tab 2'),],),),body: TabBarView(children: [// 第一个选项卡的内容Container(),// 第二个选项卡的内容Container(),],),),
    )
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/23461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-24.5,6 SPI驱动实验-ICM20608 ADC采样值

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

如何扫描照片?分享推荐这三款软件!

在数字化时代&#xff0c;将纸质照片转化为电子版已成为一种常见需求。无论是为了保存珍贵的回忆&#xff0c;还是为了方便分享和编辑&#xff0c;照片扫描软件都发挥着不可替代的作用。今天&#xff0c;我将为大家推荐三款优秀的照片扫描软件&#xff0c;帮助大家轻松完成照片…

GB28181安防视频融合汇聚平台EasyCVR如何实现视频画面自定义标签?

安防视频融合汇聚平台EasyCVR兼容性强&#xff0c;可支持Windows系统、Linux系统以及国产化操作系统等&#xff0c;平台既具备传统安防视频监控的能力&#xff0c;也具备接入AI智能分析的能力&#xff0c;可拓展性强、视频能力灵活&#xff0c;能对外分发RTMP、RTSP、HTTP-FLV、…

QTransform 笔记

QTransform 是 Qt 中用于处理二维图形变换的一个类&#xff0c;它提供了一系列的方法来平移、旋转、缩放和剪切图形。以下是 QTransform 类的基本使用指南&#xff1a; 1. 引入头文件 在使用 QTransform 类之前&#xff0c;你需要在你的代码中包含相应的头文件&#xff1a; #in…

Spring Bean的创建过程通常遵循以下步骤:

Spring框架是一个开源的Java平台&#xff0c;它以控制反转&#xff08;IoC&#xff09;和面向切面&#xff08;AOP&#xff09;为核心&#xff0c;提供了一个轻量级的解决方案来简化企业级应用程序的开发。Spring Bean是构成Spring应用的基本单位&#xff0c;它们由Spring IoC容…

力扣每日一题 6/6

2938.区分黑球与白球[中等] 题目&#xff1a; 桌子上有 n 个球&#xff0c;每个球的颜色不是黑色&#xff0c;就是白色。 给你一个长度为 n 、下标从 0 开始的二进制字符串 s&#xff0c;其中 1 和 0 分别代表黑色和白色的球。 在每一步中&#xff0c;你可以选择两个相邻的…

Camtasia Studio2024永久免费版及最新版本功能讲解

在当前数字化时代&#xff0c;视频内容的制作与编辑变得愈发重要。无论是企业宣传、在线教育还是个人Vlog制作&#xff0c;一款功能强大且易于上手的视频编辑软件成为了刚需。Camtasia Studio作为市场上备受欢迎的视频编辑与屏幕录像工具&#xff0c;凭借其强大的功能与用户友好…

站群服务器是什么?

站群服务器&#xff08;PBN&#xff0c;Private Blog Network是一种网络营销策略&#xff0c;旨在通过创建一组相互链接的博客或网站来提高搜索引擎排名 和流量。站群服务器通常由营销人员或网站所有者创建&#xff0c;旨在模拟有机的搜索引擎优化&#xff08;SEO&#xff09;信…

芒果YOLOv8改进169:即插即用 | 秩引导的块设计核心CIB结构,设计一种秩引导的块设计方案,旨在通过紧凑型架构设计减少被显示为冗余的阶段的复杂性

💡🚀🚀🚀本博客 秩引导的块设计,设计了一种秩引导的块设计方案,旨在通过紧凑型架构设计减少被显示为冗余的阶段的复杂性 :内含源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 文章目录 即插即用|秩引导的块设计|最新改进 YOLOv8 代码改进论文理论YOLO…

GA/T 1400视频汇聚平台EasyCVR级联后,平台显示无通道是什么原因?

国标GB28181安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台部署轻快&#xff0c;可支持的主流标准协议有GA/T 1400、国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。 有用户反馈&#xff…

289M→259M得物包体积治理实践

一、前言 iOS应用的包体积大小是衡量得物性能的重要指标&#xff0c;过大包体积会降低用户对应用的下载意愿&#xff0c;还会增加用户的下载等待时间以及用户手机的存储空间&#xff0c;本文重点介绍在包体积治理中的新思路以及原理与实践。 二、原理介绍 Macho产物测试 我…

【Java毕业设计】基于Java的教师考勤管理系统的设计与实现

文章目录 摘 要ABSTRACT目 录1 概述1.1 研究背景及意义1.2 国内外研究现状1.3 拟研究内容1.4 系统开发技术1.4.1 vue技术1.4.2 B/S结构1.4.3 Spring Boot框架1.4.4 MySQL数据库1.4.5 MVC模式 2 系统需求分析2.1 可行性分析2.2 功能需求分析 3 系统设计3.1 功能结构设计3.2 系统…

如何将confluence页面的内容保存为markdown格式

如何将confluence页面的内容保存为markdown格式 一.将网页另存为mhtml格式二.转换脚本(GPT-4O自动生成) 本文介绍了如何将confluence页面的内容保存为markdown格式 一.将网页另存为mhtml格式 二.转换脚本(GPT-4O自动生成) import email from bs4 import BeautifulSoup impor…

打造国产软硬件一体化解决方案 YashanDB与宏杉科技完成多项兼容互认证

近日&#xff0c;深圳计算科学研究院崖山数据库系统YashanDB与宏杉科技系列存储、系列服务器与数据库一体机等多款产品顺利完成兼容性互认证。经严格测试&#xff0c;双方产品完全兼容&#xff0c;稳定运行&#xff0c;共同提供高效、稳定、安全的国产软硬件一体化解决方案&…

pw备份问题

1、手动build&#xff0c;dn gs_ctl build -D /database/panweidb/data 或 gs_ctl build -D /database/panweidb/data -b full 2、拉起2节点cm cm_ctl start -n 2 3、启动cm_server服务 cm_ctl start 4、 netstat -anop|grep 17700 5、

龙迅#LT8711H支持TYPE-C/DP/EDP转HDMI功能应用,分辨率支持 1080p@60Hz,芯片内置固件!

1. 概述 LT8711H是一款高性能 Type-C/DP1.2/EDP 转 HD-DVI1.3 转换器&#xff0c;设计用于将 USB Type-C 源或 DP1.2 源连接到 HD-DVI1.3 接收器。 该LT8711H集成了符合 DP1.2 标准的接收器和符合 HD-DVI1.3 标准的发射器。此外&#xff0c;还包括两个用于 CC 通信的 CC 控制器…

C语言(联合和枚举)

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习笔记&#xff0c;在这里撰写成…

《贫穷的本质》

穷人获取的信息有限&#xff0c;存在认知上的差距&#xff0c;不了解自己现有的资源&#xff0c;并且合理使用。 self conclusion 1、由以下摘抄1有感而发&#xff1a;童年时期将很大程度上影响未来的发展。《贫穷的本质》一书告诉我们&#xff0c;孕妇和幼儿时期如果能提供更…

一个程序员的牢狱生涯(54)申请

星期二 申请 我和号子里的众人安静地看着电视。 在‘X闻联播’快要结束的时候,过道内响起了大铁栅栏被打开的声音,没有皮鞋声响起,看来是‘赵老大’走了进来。我想起白天的时候‘赵老大’曾和我说过,晚上可能会让我去他那间单独的号子里帮他写点东西,这次‘赵老大’进来也…

DNF游戏攻略:云手机征服大Boss迷雾技巧教程!

在DNF&#xff08;地下城与勇士&#xff09;的世界中&#xff0c;大Boss迷雾是一场挑战&#xff0c;但也是一次机会。掌握各种机制和技巧将是你击败迷雾的关键。在这篇攻略中&#xff0c;我们将详细介绍常见的机制和对应的应对策略&#xff0c;帮助你轻松通关。同时如何轻松助力…