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所示:

图3-2

 

posted @ 2020-08-06 18:27  NeoZy  阅读(153)  评论(0编辑  收藏  举报