文章目录
1.Material 应用
如果不想flutter debug的时候模拟器右上角显示DEBUG,就添加:
debugShowCheckedModeBanner: false,
另外建dart文件,给main.dart减负。
因为post.dart在相对于listview_demo.dart的上一级目录往下找,所以加一个…/
import '../model/post.dart';
2.AppBar:工具栏上的图标按钮(IconButton)
Scaffold下设置导航栏。
class Home extends StatelessWidget{
@override
Widget build(BuildContext context) {
// TODO: implement build
return Scaffold(
appBar:AppBar(
title:Text('NINGHAO'),
elevation:30.0,//阴影默认4.0
leading: IconButton(
icon: Icon(Icons.menu),
tooltip: 'Navigation',
onPressed: ()=>debugPrint('Navigation button is pressed')
),
actions: <Widget>[//actions: <Widget>里可以设置一组小部件
IconButton(
icon: Icon(Icons.search),
tooltip: 'search',
onPressed: ()=>debugPrint('search button is pressed')
),
IconButton(
icon: Icon(Icons.more_horiz),
tooltip: 'more_horiz',
onPressed: ()=>debugPrint('more_horiz button is pressed')
),
],
),
body:ListViewDemo()
);
}
}
3.TabBar:用标签形式展示内容
用DefaultTabController控制
class Home extends StatelessWidget{
@override
Widget build(BuildContext context) {
// TODO: implement build
return DefaultTabController(
length: 3,
child: Scaffold(
appBar:AppBar(
title:Text('NINGHAO'),
elevation:30.0,//阴影默认4.0
leading: IconButton(
icon: Icon(Icons.menu),
tooltip: 'Navigation',
onPressed: ()=>debugPrint('Navigation button is pressed')
),
actions: <Widget>[//actions: <Widget>里可以设置一组小部件
IconButton(
icon: Icon(Icons.search),
tooltip: 'search',
onPressed: ()=>debugPrint('search button is pressed')
),
IconButton(
icon: Icon(Icons.more_horiz),
tooltip: 'more_horiz',
onPressed: ()=>debugPrint('more_horiz button is pressed')
),
],
bottom: TabBar(
tabs: <Widget>[
Tab(icon: Icon(Icons.local_florist)),
Tab(icon: Icon(Icons.change_history)),
Tab(icon: Icon(Icons.directions_bike)),
],
),
),
body:TabBarView(
children: <Widget>[
ListViewDemo(),
Icon(Icons.local_florist,size:128.0,color:Colors.black12),
Icon(Icons.directions_bike,size:128.0,color:Colors.black12),
],
)
),
);
}
}
4.TabBar:自定义标签栏的样式
unselectedLabelColor: Colors.black38,
indicatorColor: Colors.black54,//
indicatorSize: TabBarIndicatorSize.label,
indicatorWeight: 1.0,
5.Material:自定义按钮水波纹样式
highlightColor: Color.fromRGBO(255, 255, 255, 0.5),//白色,不透明度是0.5
splashColor: Colors.white70//水波纹不透明度是70的白色
6.Drawer:抽屉(边栏)
左边滑动出现的抽屉
drawer: Text('This is drawer'),
右边滑动出现的抽屉
endDrawer: Text('This is drawer'),
drawer: Container(
color:Colors.blue,
padding: EdgeInsets.all(8.0),//内边距
child: Column(
mainAxisAlignment:MainAxisAlignment.center,
children:<Widget>[
Text('This is drawer')
],
),
),
7. Drawer:在抽屉里使用 ListView, DrawerHeader,ListTile
drawer: Drawer(
child:ListView(
padding:EdgeInsets.zero,
children:<Widget>[
DrawerHeader(
child:Text('header'.toUpperCase()),
decoration: BoxDecoration(
color:Colors.grey[100],
),
),
ListTile(
title:Text('Messages',textAlign:TextAlign.right),
trailing: Icon(Icons.message,color:Colors.black12,size:22.0),
),
ListTile(
title:Text('Favorite',textAlign:TextAlign.right),
leading: Icon(Icons.favorite,color:Colors.black12,size:22.0),
),
ListTile(
title:Text('Setting',textAlign:TextAlign.right),
trailing: Icon(Icons.settings,color:Colors.black12,size:22.0),
)
]
)
)
8.Drawer:抽屉的打开与关闭
/*leading: IconButton(// 注释掉,就会默认把Draw添加上
icon: Icon(Icons.menu),
tooltip: 'Navigation',
onPressed: ()=>debugPrint('Navigation button is pressed')
),
*/
关闭
onTap:() =>Navigator.pop(context),
# 9.UserAccountDrawerHeader:抽屉里的用户帐号信息
UserAccountsDrawerHeader(
accountName: Text('wanghao',style:TextStyle(fontWeight:FontWeight.bold)),
accountEmail: Text('wanghao@ninghao.net'),
currentAccountPicture:CircleAvatar(
backgroundImage: NetworkImage('https://resources.ninghao.org/images/wanghao.jpg'),
),
),
10.用户帐户头部的背景图像
decoration: BoxDecoration(//头部账户背景
color:Colors.yellow[400],
image: DecorationImage(
image: NetworkImage('https://resources.ninghao.org/images/childhood-in-a-picture.jpg'),
fit: BoxFit.cover,//填充方式,全部填满
colorFilter: ColorFilter.mode(Colors.yellow[400].withOpacity(0.6), BlendMode.hardLight),//滤镜
),
),
11.创建 DrawerDemo 小部件
单独用个小部件存放抽屉
drawer_demo.dart:
import 'package:flutter/material.dart';
class Drawerdemo extends StatelessWidget{
@override
Widget build(BuildContext context) {
// TODO: implement build
return Drawer(
child:ListView(
padding:EdgeInsets.zero,
children:<Widget>[
/*DrawerHeader(
child:Text('header'.toUpperCase()),
decoration: BoxDecoration(
color:Colors.grey[100],
),
),*/
UserAccountsDrawerHeader(//头部账户
accountName: Text('wanghao',style:TextStyle(fontWeight:FontWeight.bold)),
accountEmail: Text('wanghao@ninghao.net'),
currentAccountPicture:CircleAvatar(
backgroundImage: NetworkImage('https://resources.ninghao.org/images/wanghao.jpg'),
),
decoration: BoxDecoration(//头部账户背景
color:Colors.yellow[400],
image: DecorationImage(
image: NetworkImage('https://resources.ninghao.org/images/childhood-in-a-picture.jpg'),
fit: BoxFit.cover,//填充方式,全部填满
colorFilter: ColorFilter.mode(Colors.yellow[400].withOpacity(0.6), BlendMode.hardLight),//滤镜
),
),
),
ListTile(
title:Text('Messages',textAlign:TextAlign.right),
trailing: Icon(Icons.message,color:Colors.black12,size:22.0),
onTap:() =>Navigator.pop(context),
),
ListTile(
title:Text('Favorite',textAlign:TextAlign.right),
leading: Icon(Icons.favorite,color:Colors.black12,size:22.0),
onTap:() =>Navigator.pop(context),
),
ListTile(
title:Text('Setting',textAlign:TextAlign.right),
trailing: Icon(Icons.settings,color:Colors.black12,size:22.0),
onTap:() =>Navigator.pop(context),
)
]
)
);
}
}
使用:
导入头文件
import 'demo/drawer_demo.dart';
drawer: Drawerdemo()
12.BottomNavigationBar:底部导航栏
bottomNavigationBar: BottomNavigationBar(
type: BottomNavigationBarType.fixed,//底部导航栏超过4个就要设置这个type,不然不显示
fixedColor: Colors.black,//激活状态的颜色
items: [
BottomNavigationBarItem(
icon: Icon(Icons.explore),
title: Text('Explore'),
),
BottomNavigationBarItem(
icon: Icon(Icons.history),
title: Text('History'),
),
BottomNavigationBarItem(
icon: Icon(Icons.list),
title: Text('List'),
),
BottomNavigationBarItem(
icon: Icon(Icons.person),
title: Text('person'),
),
]
),
13.BottomNavigationBar:底部导航栏的激活状态
单独写个dart,存放底部导航栏
bottom_navigation_bar.dart:
import 'package:flutter/material.dart';
class BottomNavigationbarDemo extends StatefulWidget{
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return _BottomNavigationBarDemoState();
}
}
class _BottomNavigationBarDemoState extends State<BottomNavigationbarDemo>{
int _currentIndex=0;//自定义变量和函数
void _onTapHandler (int index){
setState((){
_currentIndex=index;
}
);
}
@override
Widget build(BuildContext context) {
// TODO: implement build
return BottomNavigationBar(
currentIndex: _currentIndex,//当前item
onTap: _onTapHandler,//点击调用
type: BottomNavigationBarType.fixed,//底部导航栏超过4个就要设置这个type,不然不显示
fixedColor: Colors.black,//激活状态的颜色
items: [
BottomNavigationBarItem(
icon: Icon(Icons.explore),
title: Text('Explore'),
),
BottomNavigationBarItem(
icon: Icon(Icons.history),
title: Text('History'),
),
BottomNavigationBarItem(
icon: Icon(Icons.list),
title: Text('List'),
),
BottomNavigationBarItem(
icon: Icon(Icons.person),
title: Text('person'),
),
]
);
}
}