flutter学习记录
1.在Flutter中,大多数东西都是widget(后同“组件”或“部件”),包括对齐(alignment)、填充(padding)和布局(layout)等,它们都是以widget的形式提供。
2.
-
Flutter在构建页面时,会调用组件的
build
方法,widget的主要工作是提供一个build()方法来描述如何构建UI界面(通常是通过组合、拼装其它基础widget)。 -
MaterialApp
是Material库中提供的Flutter APP框架,通过它可以设置应用的名称、主题、语言、首页及路由列表等。MaterialApp
也是一个widget。 -
home
为Flutter应用的首页,它也是一个widget。
3.statefulwidget即有状态组件,它的状态可以在运行中发生变化。它由一个Stateful Widget类和一个State类组成。其中Stateful Widget类是不变的,但是State类中持有的状态在整个Widget的生命周期中是会发生变化的。
4.路由(route)在客户端开发中指的就是页面(page),所谓路由管理在客户端开发中也特指页面之间的跳转。无论android还是ios,导航管理都会维护一个路由栈,所谓push就指打开一个新页面,pop操作指关闭一个已经打开的页面。
5.初始路由=首页
6.MaterialPageRoute
是Material组件库提供的组件,它可以针对不同平台,实现与平台页面切换动画风格一致的路由切换动画
MaterialPageRoute({
WidgetBuilder builder,
RouteSettings settings,
bool maintainState = true,
bool fullscreenDialog = false,
})
7.
Navigator
是一个路由管理的组件,它提供了打开和退出路由页方法。Navigator
通过一个栈来管理活动路由集合。通常当前屏幕显示的页面就是栈顶的路由。Navigator
提供了一系列方法来管理路由栈,在此我们只介绍其最常用的两个方法:
Future push(BuildContext context, Route route)
将给定的路由入栈(即打开新的页面),返回值是一个Future
对象,用以接收新路由出栈(即关闭)时的返回数据。
bool pop(BuildContext context, [ result ])
将栈顶路由出栈,result
为页面关闭时返回给上一个页面的数据。
8.路由注册时,用‘/’表示主页(home page),但注意不能同时注册home页,还同时在materialpp里同时指明home项的值:
class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return new MaterialApp( title: 'Flutter Demo', initialRoute: "/", theme: new ThemeData( primarySwatch: Colors.blue, ), //注册路由表 routes:{ "new_page":(context) => NewRoute(), "/":(context) => MyHomePage(title: 'Flutter Demo Home Page'), //注册首页路由 }, //home: new MyHomePage(title: 'Flutter Demo Home Page'),这个不能加,前面已经注册了home页面 ); } }
9.
build
方法有一个context
参数,它是BuildContext
类的一个实例,表示当前widget在widget树中的上下文,每一个widget都会对应一个context对象(因为每一个widget都是widget树上的一个节点)。实际上,context
是当前widget在widget树中位置中执行”相关操作“的一个句柄,比如它提供了从当前widget开始向上遍历widget树以及按照widget类型查找父级widget的方法。
10.
StatefulWidget生命周期如图3-2所示: