学习网站
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执行过程。