美文网首页
flutter 基础知识

flutter 基础知识

作者: sylviaMo | 来源:发表于2018-08-22 14:52 被阅读57次

    linux安装配置flutter

    参考官方配置,很容易就配置完毕后https://flutterchina.club/setup-linux/,可能在执行 flutter doctor会报device 找不到的问题,连上手机或者模拟器再执行一遍,基本就不会报错了。

    flutter的层设计

    Flutter总共分为四层,从下到上分别是:dart:ui,Rendering,Widgets,Material。参照下图:


    image

    dart:ui

    dart:ui是flutter底层引擎所提供的一个dart库,是flutter对dart标准库的一个扩展。它提供了一套基于canvas的绘图api,也包含了用于跟操作系统交互的模块mojo,当然,还包括了所有dart标准库。dart:ui提供最基础的底层api,要直接使用它,你必须写非常多的代码,进行大量的运算:比如在每一帧中计算每个组件的坐标,编码工作很繁琐。一般来说,开发者不会直接使用dart:ui,但如果他们需要写一些特殊的应用,比如开发游戏,那可能就需要在dart:ui的基础上去构建自己的框架。

    Rendering

    Rendering层是布局(排版)抽象层,它把dart:ui层api抽象封装成大量的Render对象,免除了大量布局坐标的手动计算,并还对布局数据进行了缓存处理,提升了渲染效率。开发者使用层层嵌套的构造函数来构建一个render对象树,当发生用户交互或者数据发生改变时,需要显式更新对应的render对象,即更新UI。 这样的设计与其他UI系统非常类似,比如:web的dom,android与ios的视图层等。因为遵循了传统的开发思路,喜欢这种方式的开发者可以直接使用本层的api进行开发。

    Widgets

    Widgets层是对Rendering层对象的封装层,它引入element对象以及StatefulBuilder来管理底层的render对象,开发者使用不可变的Widget对象来创建UI,当数据发生变化的时候,再重新构建一个新的widget树即可,不再需要使用分离的代码来维护UI(Rendering层就要用一部分代码构建初始UI,另一部分更新UI)。这一层应该就是flutter默认的或者说最基础的组件库,你可以继承并修改它们,做成属于自己的组件。

    Material

    Material层相对来说最容易理解,它们就是使用Widgets层对象,实现了Material Design的顶层UI组件。

    Dart

    语言

    工具

    创建一个flutter project

    1. 选择 File>New Flutter Project
    2. 选择 Flutter application 作为 project 类型, 然后点击 Next
    3. 输入项目名称 (如 myapp), 然后点击 Next
    4. 点击 Finish
    5. 等待Android Studio安装SDK并创建项目.

    上述命令创建一个Flutter项目,项目名为myapp,其中包含一个使用Material 组件的简单演示应用程序。

    在项目目录中,您应用程序的代码位于 lib/main.dart.

    第一次创建会比较慢,在国内镜像url都已经配置好的情况下,稍微等待几分钟就会创建完成。

    包管理

    每个flutter都是有一个包管理配置文件pubspec.yaml,在这里可以引入外部包,可以引入字体库和一些本地图片等资源

    name: flutter_layout
    description: A new Flutter application.
    
    dependencies:
      flutter:
        sdk: flutter
        cupertino_icons: ^0.1.2
    
    dev_dependencies:
      flutter_test:
        sdk: flutter
    
      uses-material-design: true
      assets:
          - images/
       fonts:
         - family: Schyler
           fonts:
             - asset: fonts/Schyler-Regular.ttf
             - asset: fonts/Schyler-Italic.ttf
               style: italic
         - family: Trajan Pro
           fonts:
             - asset: fonts/TrajanPro.ttf
             - asset: fonts/TrajanPro_Bold.ttf
               weight: 700
    

    有状态的部件(Stateful widget)

    Stateless widgets 是不可变的, 这意味着它们的属性不能改变 - 所有的值都是最终的.

    Stateful widgets 持有的状态可能在widget生命周期中发生变化. 实现一个 stateful widget 至少需要两个类:

    一个 StatefulWidget类。
    一个 State类。 StatefulWidget类本身是不变的,但是 State类在widget生命周期中始终存在.
    

    在Flutter中构建布局

    未完待续...

    相关文章

      网友评论

          本文标题:flutter 基础知识

          本文链接:https://www.haomeiwen.com/subject/ereeiftx.html