学习网站
dart学习网站:dart.goodev.org
flutter中文网:https://flutterchina.club/flutter-for-android/
基础知识
- dart 是单线程;一般用aysn await 来处理异步操作 (futture)
- 界面基本上都是wighet
- 界面用代码来编写,嵌套层级有点多
插件
Flutter定义了三种不同类型的Channel,它们分别是
- BasicMessageChannel:用于传递字符串和半结构化的信息。
- MethodChannel:用于传递方法调用(method invocation)。
- EventChannel: 用于数据流(event streams)的通信。
插件打包发布
运行 dry-run 命令以查看是否都准备OK了:
flutter packages pub publish --dry-run
运行发布命令:
flutter packages pub publish
flutter plugin通信原理
flutter的dv层 和android的jvm层借助底层的c/c++来通信
官方类型对比
| Dart | Android | iOS |
|---|---|---|
| null | null | nil (NSNull when nested) |
| bool | java.lang.Boolean | NSNumber numberWithBool: |
| int | java.lang.Integer | NSNumber numberWithInt: |
| int, if 32 bits not enough | java.lang.Long | NSNumber numberWithLong: |
| int, if 64 bits not enough | java.math.BigInteger | FlutterStandardBigInteger |
| double | java.lang.Double | NSNumber numberWithDouble: |
| String j | ava.lang.String | NSString |
| Uint8List | byte[] | FlutterStandardTypedData typedDataWithBytes: |
| Int32List | int[] | FlutterStandardTypedData typedDataWithInt32: |
| Int64List | long[] | FlutterStandardTypedData typedDataWithInt64: |
| Float64List | double[] | FlutterStandardTypedData typedDataWithFloat64: |
| List | java.util.ArrayList | NSArray |
| Map | java.util.HashMap | NSDictionary |
动画
- AnimationController用于控制动画,它包含动画的启动
forward()、停止stop()、反向播放reverse()等方法 - Tween 类似android的补间动画,可以通过lerp决定动画的变化方式
- Curve 差值动画,要变化不线性用这个,比如弹性Curves.bounceIn
- AnimatedWidget类系统封装了调用
setState()的细节,只刷新部分用这个省事 - Hero 一个页面切换另一个页面,共享元素的时候,可以得到好看的效果
知识点
flutter 看不了 gradle执行过程。