博客地址:html
https://jspang.com/post/flutterDemo.html#toc-973app
视频地址:less
https://www.bilibili.com/video/av39709290?p=3jsp
视频里面的评论:动态组件就是能够setState的组件ide
flutter create demo02的项目工具
这里是定义主题的地方:自定义主题使用theme而后里面使用:primarySwatch,后面主要跟的就是咱们的颜色布局
引入:bottom_appBar_demo.dartpost
而后咱们去建立这个自定义的组件bottom_appBar_demo.dartui
建立咱们的动态组件:stateFulW快捷键this
文件起好名字:BottomAppBarDemo
今天主要学的就是这个:floatingActionButton,字面意思 可交互的浮动的按钮。在Scaffold里面已经有它的位置了。因此后面咱们直接吧FloatingActionButton组件引用过来就能够了。
ToolTip不影响整个页面的布局,只有长按的时候才会显示。为何要加tooltip。由于咱们这个FAB组件常常里面就放一个icon图标。
child里面通常都是放ICON组件。这样这个动态组件咱们就写完了。
鼠标长按会出tooltip
此次这里咱们使用BottomAppBar()底部工具栏。这个底部工具栏有什么好处呢。它比NavigatorBar要灵活。
shape的做用由于要和FAB融合 融合的时候要有一个缺口。缺口的设置就在shape里面设置。
查看效果
可是如今尚未融合到一块儿:这里咱们须要设置这个属性:floatingActionButtonLocation
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
import 'package:flutter/material.dart'; import 'bottom_appBar_demo.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.lightBlue,//里面定义了不少的主题,这里使用亮蓝色 ), home:BottomAppBarDemo() ); } }
import 'package:flutter/material.dart'; class BottomAppBarDemo extends StatefulWidget { final Widget child; BottomAppBarDemo({Key key, this.child}) : super(key: key); _BottomAppBarDemoState createState() => _BottomAppBarDemoState(); } class _BottomAppBarDemoState extends State<BottomAppBarDemo> { @override Widget build(BuildContext context) { return Scaffold( floatingActionButton: FloatingActionButton( onPressed: (){ }, tooltip: 'WJW', child: Icon( Icons.add, color: Colors.white, ), ), floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked, bottomNavigationBar: BottomAppBar( color: Colors.lightBlue, shape: CircularNotchedRectangle(), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceAround, children: <Widget>[ IconButton( icon: Icon(Icons.home), color: Colors.white, onPressed: (){}, ), IconButton( icon: Icon(Icons.alarm_on), color: Colors.white, onPressed: (){}, ) ], ), ), ); } }