一、AndroidStudio环境安装
1.两种下载flutter sdk的方式
如果有电脑有git,git下载: git clone -b beta https://github.com/flutter/flutter.git
如果电脑没有git,网址下载:https://flutter.io/docs/development/tools/sdk/archive#windows
2.配置flutter环境变量:Path = E:\flutter_windows_v1.0.0-stable\flutter\bin
3.配置AndroidStudio的Dart和Flutter
dart:E:\flutter_windows_v1.0.0-stable\flutter\bin\cache\dart-sdk
flutter:E:\flutter_windows_v1.0.0-stable\flutter
4.重启设备
二、常用Widget
1.StatelessWidget:类似于Activity
2.MaterialApp:填充StatelessWidget
3.Scanffold:填充MaterialApp的home,提供默认的导航栏、标题
4.MaterialButton:填充Scanffold的body
5.StatelessWidget中必须初始一个MaterialApp,其余可以用home填充
三、如何类比Android学习flutter
1.Android中的View
在flutter里面对应Widget;
2.Android中View的更新是invalidate
在flutter中,只有有状态的Widget才可以更新用户界面,那就是StatefulWidget,可以通过setState更新界面
3.Android中的xml布局
在flutter中,布局也是通过widget来呈现,你可以new一个MaterialButton,通过child来实现你想要的内容;
4.Android中添加或者删除组件通过addChild和removeChild
在flutter中,只能通过替换widget来更新界面
5.Android中View可以通过animate实现动画
在flutter中可以通过AnimationController和Interpolator实现动画
6.Android中的Canvas和Paint
在flutter中通过CustomPaint和CustomPainter来实现绘制画布
7.Android中通过继承View或者View子类来实现自定义控件
在flutter中通过widget和widget的相互组合实现自定义
8.Android中通过Intent实现页面的跳转和组件之间消息的传递
在flutter中也可以通过Native的整合来触发Intent;
不过如果只是实现页面之间的切换,flutter提供的是路由的概念,类似Android的Activity;
管理多个屏幕的两个核心类是Route和Navigator;
Route就是页面;Navigator就是管理Route的wedgit;
Navigator可以通过push和pop Route来实现页面的切换;
flutter也可以通过MethodChannel.invokeMethod来处理Android中传来的intent
9.Android中通过runOnUiThread来异步更新UI
flutter所使用的Dart是单线程执行模型,支持solates,就是可以在其它线程上运行Dart代码的方式;
如果没有启动新的Isolate,所有的Dart代码搜是在UI线程中运行的;
您可以在当前的线程中去写网络请求的代码,也可以在获取到网络数据后使用setState直接更新;
如果你想做UI中做一些耗时操作,只需要在方法名后声明async即可;
10.Android中Activity中的生命周期
flutter中的widget也有自己的生命周期:resumed、inactive、paused、suspending;
其中inactive只在ios上使用;suspending只在android上使用;
11.Android中的LinearLayout和RelativeLayout
在flutter中可以通过Row和Column以及Stack的组合来实现
12.Android中的监听事件
在flutter中对于widget的监听分为两种:
如果当前的Widget支持监听事件,只需在onPressed中设置即可;
如果当前的Widget不支持监听事件,就需要把当前Widget包装到GestureDetector中通过onTap来处理了;
另外GesruewDetector中还有很多其它手势的监听;
13.Andorid中的ListView和adapter
在flutter中同样也有ListView,不过它并没有adapter的概念,它是通过children的标签获取一个List<Widget>来展示内容的;
同时可以在List<Widget>获取数据时通过GestureDetector添加监听事件;
ListView的更新需要更新数据源的List,然后再调用setState方可生效;
14.Android中的SharedPreference和SQLite
在flutter中同样也可以使用
15.Android中的Notification
在flutter可以使用Firebase_Messaging插件来访问通知(国内禁用)
注:
Flutter官网地址:https://flutterchina.club/