领琾

黄宜波的个人博客

Flutter基础——线程和异步

之前在yi提到过,Dart是单线程执行模型。但是它支持Isolate(一种让 Dart 代码运行在其他线程的方式)、时间循环和异步编程。除非自己创建一个Isolate,否则Dart代码会运行在主线程,并由event loop驱动。 Dart的单线程模型并不意味着一定是阻塞操作。可以使用Dart提供的异步工具(async/await),来实现异步操作。 实现一个列表,数据请求后刷新界面,需...

Flutter基础——导航

Flutter使用Navigator和Routes来管理页面导航,相应的,在iOS中有push/pop和‘present/dismiss’等方式。一个路由是App中‘屏幕’或‘页面’的抽象,一个Navigator是管理多个路由的Widget,它的工作原理与iOS中的UINavigationController相似。 在页面之间跳转可以有以下选择: 具体制定一个有路由名构成的Map。...

Flutter基础——布局二

拥有多个子元素的布局widget

Row 在水平方向上排列子widget的列表。 使用Row的来包括的Widget不会滚动,当子widget多于可用空间中能容纳的数目时报错。要使子项扩展以填充可用的水平空间,请将子项包装在Expanded小部件中。 如果只有一个孩子优先考虑Align或Center。 构造函数 1 Row({Key key, MainAxisAlignment mainAxisAlignment: ...

Flutter基础——布局一

拥有多个子元素的布局widget

iOS中常常借助frame,VFL,AutoLayout,UIStackView或者Masonry,SnapKit等来实现子控件怎么布局。Flutter中的布局需要使用Widget,不同的Widget可以实现不同的效果。本文主要介绍几个基本的布局组件,及其用法。 ### Container Container一个拥有绘制、定位、调整大小的 widget。 布局行为 如果Contai...

Flutter基础——Widget

Widget 在Flutter中,Widget相当于iOS中的UIView,但并不完全一样。 Widgets拥有不同的生命周期,它们一直存在且保持不变,知道需要改变时才会改变。当它们的状态被改变时,Flutter会构建一颗心的widgets树,而iOS中的views改变时并不会重新创建,只是在使用setNeedsDisplay()之后重新绘制。 由于不可变性,Flutter的widge...

Flutter入门——异步编程

异步支持 Dart库中有许多返回Future或Stream对象的类型。这些函数是异步的:它们在设置可能耗时的操作(例如I/O)后返回,而不等待该操作完成。 async和await关键字用来支持异步编程。 处理Futures 当我们需要的结果在将来返回时,有两种实现方式: 使用async和await关键字。 使用Future API。 使用async和await的异步代...

Flutter入门——使用库

库和可见性 使用import和library智联可以创建一个模块化的可共享的代码库。库不仅提供API,而且还是是隐私单元:以下划线(_)开头的标识符仅在库内可见。每个Dart应用程序都是一个库,即使它不适用library指令。可以使用包(packages)来分发库。 使用库 使用import来指定如何让一个库中的命名空间在另一个库中使用。 例如Dart Web应用,通常使用dart:...

Flutter入门——泛型

在查看基本数组类型List的API文档,会看到该类型实际上是List。<...>表示法将List标记为泛型(或参数化)类型 - 具有正式类型参数的类型。按照惯例,大多数类型变量都有单字母名称,例如E,T,S,K和V. 为什么要使用泛型 类型安全通常需要泛型,除了允许让代码运行之外,还可以: 正确指定泛型类型会生成更好的代码。 例如,可以使用List(字符串列表),...

Flutter入门——Dart类与面向对象

Dart是一种面向对象的语言,支持基于mixin的继承。每个对象都是一个类的实例,所有类都继承自Object。 基于Mixin的继承意味着虽然每个类(除了Object)只有一个超类,一个类可以继承自多个父类(多继承)。 类的定义 由关键字class类声明一个类,类的命名首字母一般大写,变量名使用驼峰命名规则: 1 2 class Point { } 构造函数 通过创建与类同名的函...

Flutter入门——Dart语法

Flutter 开发语言是Dart,点击可查看官方文档 注释 单行 1 // 单行注释 多行 1 2 3 /* 多行注释 */ 文档注释 1 /// 文档注释 文档注释是多行或单行的,开头使用///或/**。使用///连续的行,与多行文档注释有同样的效果。 1 2 3 4 5 6 /// A domesticated South American camelid (...