Flutter常用组件实践
- 1、MaterialApp 和 Center(组件居中)
- 2、Scaffold
- 3、Container(容器)
- 4、BoxDecoration(装饰器)
- 5、Column(纵向布局)及Icon(图标)
- 6、Column/Row(横向/横向布局)+CloseButton/BackButton/IconButton(简单按钮)
- 7、Expanded和Flexible
- 8、Stack和Positioned(层叠布局)
- 9、页面底部切换BottomNavigationBar
- 10、RefreshIndicator和ListView(下拉刷新)
- 11、FloatingActionButton(悬浮按钮)
- 12、Text(文本)
- 13、TextField(功能较多)
- 14、PageView(滑动视图)
- 15、Image(加载图片)
- 16、Chip(有趣的小组件)和 Divider(分隔符)
- 17、Card(卡片式布局)
- 18、AlertDialog(弹出框)
- 19、LinearGradient(颜色渐变)
- 20、RichText(富文本)
- 21、GestureDetector(手势监控)
- 22、Opacity(透明度)
- 23、MediaQuery.removePadding(去除组件之间空格)
- 24、Slider(滑动进度条)
- 25、ReorderableListView(拖拽排序组件)
1、MaterialApp 和 Center(组件居中)
class MyApp extends StatelessWidget {const MyApp({super.key});// This widget is the root of your application. Widget build(BuildContext context) {return MaterialApp(title: '我的应用',theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),useMaterial3: true,),home: Center(child: Text("测试文本")),);}
}
2、Scaffold
Scaffold 实现了基本的 MaterialApp 布局。只要是在 Material 中定义了的单个界面显示的布局控件元素,都可以使用 Scaffold 来绘制。
class MyApp extends StatelessWidget {const MyApp({super.key});// This widget is the root of your application. Widget build(BuildContext context) {return MaterialApp(title: '我的应用',theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),useMaterial3: true,),home: Scaffold(appBar: AppBar(title: Text('我是页面标题'),centerTitle: true,elevation: 0,bottom: null,backgroundColor: Colors.orangeAccent,bottomOpacity: 0,),//头部导航条区域body: Center(child: Text('我是主体内容'),),//页面主题内容区域floatingActionButton: FloatingActionButton(onPressed: () {},child: Icon(Icons.add),),//右下角浮动按钮区域drawer: Drawer(),//侧边栏抽屉区域bottomNavigationBar: BottomNavigationBar(items: [BottomNavigationBarItem(icon: Icon(Icons.home,color: Colors.grey,),activeIcon: Icon(Icons.home,color: Colors.blue,),label: '首页',),BottomNavigationBarItem(icon: Icon(Icons.list,color: Colors.grey,),activeIcon: Icon(Icons.list,color: Colors.blue,),label: "列表",)],),) //底部tabBar区域,);}
}
3、Container(容器)
将Container容器放在上面的Scaffold对象的body部分,则到如下
Container(width: 200, //宽度height: 200, //长度child: Text("我是body部分的内容"), //子组件decoration: BoxDecoration(color: Colors.blue,), //装饰器padding: EdgeInsets.all(10),//内容距离盒子边界的距离margin: EdgeInsets.all(10) //盒子边界之外的距离
)
4、BoxDecoration(装饰器)
Center(child: Container(width: 270,height: 470,decoration: BoxDecoration(color: Colors.blue, //颜色背景image: DecorationImage(image: NetworkImage("https://inews.gtimg.com/om_bt/O_DyA7LF3uL3wZ9zYVo8ZhI_IMUOn_NJ_Pgj2IhAuRApoAA/641"), //背景图片fit: BoxFit.cover, //图片充满组件),border: Border.all(color: Colors.red,width: 5.0,)), //设置边框),
)
5、Column(纵向布局)及Icon(图标)
Column(children: <Widget>[Expanded(child: Text('主体内容1'), flex: 3,),Expanded(child: Text('主体内容2'), flex