发表日期:2018-12 文章编辑:小灯 浏览次数:1819
随着flutter1.0版本的发布,相信大多数移动开发者对flutter都会有很大的热情,毕竟这是谷歌爸爸推广的,现在学习的话肯定对以后的工作会大有帮助,那么今天我们就来学习flutter。
今天我们就来看看怎么用flutter来搭一个APP开发的架子,首先需要知道的是在flutter中有两种Widget,一种是StatelessWidget,继承这个类的widget在程序初始化的时候只走一次生命周期,所以比较适合显示静态的页面,而如果你的页面需要交互的话则是需要继承StatefulWidget。说了那么多,咱们还是先上代码看看吧(talk is cheap, show me the code~)
class AppPage extends StatefulWidget{ @override State<StatefulWidget> createState() { return _AppPageState(); } }class _AppPageState extends State<AppPage> with SingleTickerProviderStateMixin{ int _page = 0; PageController _pageController; final List<BottomNavigationBarItem> listBar = [BottomNavigationBarItem(title: Text("首页"),icon:Icon(Icons.home),backgroundColor: Config.colorPrimary ), BottomNavigationBarItem(title: Text("备忘录"),icon: Icon(Icons.border_color),backgroundColor: Config.colorPrimary), BottomNavigationBarItem(title: Text("知识"),icon: Icon(Icons.reorder),backgroundColor: Config.colorPrimary),];@override void initState() { _pageController = PageController(initialPage: this._page); }@override void dispose() { _pageController.dispose(); super.dispose(); }@override Widget build(BuildContext context) { return Scaffold( body: PageView( physics: NeverScrollableScrollPhysics(), children: <Widget>[ Home(), Memo(), knowledge() ], onPageChanged: _onPageChanged, controller: _pageController, ), bottomNavigationBar: BottomNavigationBar( items: listBar, currentIndex: _page, fixedColor: Config.colorPrimary, type: BottomNavigationBarType.fixed, onTap: _onTap,), ); }void _onPageChanged(int page){ setState(() { this._page = page; }); }void _onTap(int index){ _pageController.animateToPage(index, duration: const Duration(milliseconds: 500), curve: Curves.ease); } }
这个类叫AppPage ,因为需要交互所以继承了StatefulWidget,在手机上显示的效果如下:
可以看到这其实就是一个APP的首页,那么上面的代码具体都有什么功能呢,且听我一一道来:
1.首先我们需要定义个页面AppPage(名字随便取) 继承自StatefulWidget,而继承StatefulWidget的类都需要的返回一个新的继承State的类,可能听起来有点绕口,就如下图所示,这种写法是固定的,凡是继承自StatefulWidget的widget都这样写就行了。
2.我们需要定义三个tab页面,因为目前的flutter还是有些bug的,因为在tab切换的时候页面的数据会重新加载,为了解决这种bug需要加上SingleTickerProviderStateMixin。然后需要定义三个tab按钮
可以看到每个tab按钮都是一个BottomNavigationBarItem,初始化BottomNavigationBarItem的方法也很简单,就是把tab所需要展示的icon和title传给BottomNavigationBarItem就行了。定义好了tab按钮就需要把它放在页面显示出来了,那么flutter是怎样展示页面的呢?
image.pngScaffold实现了基本的Material 布局,在Scaffold里面可以定义appbar,body等内容,至于代表啥看名字就知道了,可以看到body里面是一个PageView(类似于android中的ViewPage),在PageView的children里面传入了Home(),Memo(),knowledge()三个页面分别代表上图中的首页,备忘录,知识三个页面。bottomNavigationBar代表底部的三个tab,里面参数的意思说一下,items代表具体的tabbar,就是我们之前在上面定义的BottomNavigationBarItem列表,currentIndex表示当前页是第几页,onTap是具有水波纹效果的按钮点击事件。好了,第一篇关于flutter的文章就简单的写到这里了,有什么问题可以留言,大家一起开始学习flutter吧~
公众号.jpg同时,欢迎大家关注我公众号,谢了!!!
日期:2018-10 浏览次数:7253
日期:2018-12 浏览次数:4328
日期:2018-07 浏览次数:4876
日期:2018-12 浏览次数:4174
日期:2018-09 浏览次数:5502
日期:2018-12 浏览次数:9922
日期:2018-11 浏览次数:4804
日期:2018-07 浏览次数:4578
日期:2018-05 浏览次数:4859
日期:2018-12 浏览次数:4324
日期:2018-10 浏览次数:5139
日期:2018-12 浏览次数:6212
日期:2018-11 浏览次数:4464
日期:2018-08 浏览次数:4592
日期:2018-11 浏览次数:12629
日期:2018-09 浏览次数:5579
日期:2018-12 浏览次数:4830
日期:2018-10 浏览次数:4187
日期:2018-11 浏览次数:4528
日期:2018-12 浏览次数:6063
日期:2018-06 浏览次数:4007
日期:2018-08 浏览次数:5436
日期:2018-10 浏览次数:4457
日期:2018-12 浏览次数:4525
日期:2018-07 浏览次数:4362
日期:2018-12 浏览次数:4500
日期:2018-06 浏览次数:4383
日期:2018-11 浏览次数:4375
日期:2018-12 浏览次数:4249
日期:2018-12 浏览次数:5283
Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.