視頻地址:html
https://www.bilibili.com/video/av39709290?zwless
博客地址:jsp
https://jspang.com/post/flutterDemo.html#toc-ff4ide
flutter create demo01:命令行來建立項目,這裏我就不建立,直接用我原來的代碼post
D:\Flutter\Demo\demo03ui
新建:bottom_navigation_widget.dartspa
main裏面引用這個dart文件命令行
先由於Materil的package3d
而後快捷鍵:stful實現咱們的動態widgetcode
快捷鍵生成的代碼:
什麼是動態widget,就是說咱們這裏面的東西要進行變化,只要是變化的須要控制咱們的狀態就須要使用動態widget
動態widget有兩部分,第一部分繼承咱們的 statefulWidget,第二部分繼承State
那麼咱們命名爲 BottomNavigationWidget,上面命名下面自動跟着變
Scaffole腳手架能夠理解爲裏面已經定義好了 什麼東西放在哪,咱們根據它裏面定義好的屬性放上不一樣的東西就能夠了
像下面這個地方,咱們直接可用 bottomNavigationBar這個屬性,由於裏面已經定義好了。
咱們在Scaffole的bottomNavigationBar裏面放一個BottomNavigationBar的組件,然互組件的元素就是Items
裏面再放BottomNavigationBarItem。咱們給它設置一個圖標Icon
設置顏色,變量前面帶下劃線。看視頻的評論 說是會被強制私有化。
給按鈕加顏色。而後有加了個標題 而且給標題加了顏色
這樣咱們item就寫好。 在複製三個一樣的元素節點
後面三個節點 咱們只要修改下圖標和標題就能夠了。
可是點擊按鈕沒有什麼效果
import 'package:flutter/material.dart'; import 'bottom_navigation_widget.dart'; void main()=>runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title:'Flutter bottomNavigatonBar', theme: ThemeData.light(), home: BottomNavigationWidget(), ); } }
import 'package:flutter/material.dart'; class BottomNavigationWidget extends StatefulWidget { @override _BottomNavigationWidgetState createState() => _BottomNavigationWidgetState(); } class _BottomNavigationWidgetState extends State<BottomNavigationWidget> { final _BottomNavigationColor=Colors.blue;//定義顏色 ,私有屬性,前面加下劃線 @override Widget build(BuildContext context) { return Scaffold( bottomNavigationBar: BottomNavigationBar( items: [ BottomNavigationBarItem( icon: Icon( Icons.home, color: _BottomNavigationColor, ), title: Text( 'Home', style:TextStyle(color:_BottomNavigationColor) ) ), BottomNavigationBarItem( icon: Icon( Icons.email, color: _BottomNavigationColor, ), title: Text( 'email', style:TextStyle(color:_BottomNavigationColor) ) ), BottomNavigationBarItem( icon: Icon( Icons.pages, color: _BottomNavigationColor, ), title: Text( 'pages', style:TextStyle(color:_BottomNavigationColor) ) ), BottomNavigationBarItem( icon: Icon( Icons.airplay, color: _BottomNavigationColor, ), title: Text( 'airplay', style:TextStyle(color:_BottomNavigationColor) ) ), ], ), ); } }