Flutter 中的 Material 组件库提供了一系列用于构建漂亮的 Material Design 风格用户界面的组件。下面是一些常用的 Material 组件及其相关属性的介绍:
-  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!'), ), ), ); } }
- 
-  Button(按钮): - 
onPressed: 按钮被点击时触发的回调函数。
- 
child: 按钮上显示的内容。
- 
color: 按钮的颜色。
- 
textColor: 按钮文字的颜色。
 ElevatedButton( onPressed: () { // 按钮点击事件 }, child: Text('Click Me'), )
- 
-  TextField(文本输入框): - 
controller: 控制器,用于控制输入框的文本。
- 
decoration: 输入框的装饰,包括提示文本、边框等。
- 
onChanged: 文本变化时的回调函数。
- 
keyboardType: 键盘类型。
 TextField( decoration: InputDecoration( hintText: 'Enter your name', ), onChanged: (value) { // 文本变化时的操作 }, )
- 
-  Card(卡片): - 
child: 卡片中的内容组件。
- 
elevation: 阴影的高度。
- 
shape: 卡片的形状。
 Card( elevation: 4, child: ListTile( leading: Icon(Icons.album), title: Text('Title'), subtitle: Text('Subtitle'), onTap: () { // 点击卡片的操作 }, ), )
- 
-  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: () { // 第二个菜单项的操作 }, ), ], ), )
- 
-  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', ), ], ), ); }
- 
-  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'), )
- 
-  ListView(列表视图): - 
children: 列表中的子组件列表。
- 
itemBuilder: 用于动态构建列表项的函数。
- 
scrollDirection: 滚动方向。
- 
separatorBuilder: 列表项之间的分隔符构建器。
 ListView.builder( itemCount: 10, itemBuilder: (context, index) { return ListTile( title: Text('Item $index'), onTap: () { // 点击列表项的操作 }, ); }, )
- 
-  PopupMenuButton(弹出菜单按钮): - 
itemBuilder: 弹出菜单项的构建器。
- 
onSelected: 菜单项被选中时的回调函数。
 PopupMenuButton<String>( itemBuilder: (context) => [ PopupMenuItem( value: 'item1', child: Text('Item 1'), ), PopupMenuItem( value: 'item2', child: Text('Item 2'), ), ], onSelected: (value) { // 选择菜单项的操作 }, )
- 
-  SnackBar(消息提示条): - 
content: 提示条中显示的内容。
- 
action: 可选操作按钮。
- 
duration: 显示时间。
 ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('Hello, Snackbar!'), action: SnackBarAction( label: 'Undo', onPressed: () { // 撤销操作 }, ), ), )
- 
-  Slider(滑块): - 
value: 滑块的当前值。
- 
onChanged: 值变化时的回调函数。
- 
min和max: 滑块的最小值和最大值。
 Slider( value: 0.5, onChanged: (newValue) { // 滑动滑块的操作 }, min: 0, max: 1, )
- 
-  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); }, ), ], ), )
- 
-  Switch(开关): - 
value: 开关的当前值。
- 
onChanged: 值变化时的回调函数。
- 
activeColor: 开启状态时的颜色。
 Switch( value: true, onChanged: (newValue) { // 开关状态变化的操作 }, )
- 
-  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(), ], ), ), )
-