flutter开发练习
开发包括app常见的基础功能、依赖原生的插件、通用的组件库等。
flutter层的功能,一些基础的widget、Animation、state manage
- 搜索框
- 网络请求(异步加载和json序列化)
- 底部tabs切换
- 顶部tabs切换
- PageView(滑动切换页面)
- Redux集成
- Sqlite(本地数据库)
- SharedPreferences(键值对本地存储)
- 动画
- 表单
- 相机
- app打包
- 图片选择上传
- BLoC集成(State管理框架)
- Scoped Model集成(State管理框架)
- 屏幕适配
- ChangeNotifier
- 级联选择器(地址选择)
Flutter提供了丰富的插件接口,flutter层可以很好的和native层进行交互
- MethodChannel方式调用原生
- 简单视图类型插件,文本视图使用原生控件(TextView/UILabel)显示
- Android高德地图集成
- iOS高德地图集成
- Android&iOS高德地图功能完善
- 二维码扫描
- 登陆页面
- 首页tabs切换
- Bill页面(下拉刷新)
- 集成Redux
名称 | 显示效果 | 名称 | 显示效果 |
---|---|---|---|
水滴Tab切换 | 太极动画 | ||
Android高德地图 | iOS高德地图 | ||
地址选择器 |
官方的插件项目flutter plugins
Writing custom platform-specific code
Flutter PlatformView: How to create Widgets from Native Views
How to use Native UIs in Flutter with Swift & Platform View
Flutter的插件注册现在分为v1版本和v2版本
官方文档
Supporting the new Android plugins APIs
Upgrading pre 1.12 Android projects
需要注意的是:
- 使用新版的io.flutter.embedding.android.FlutterActivity以后,会发现插件不能用PluginRegistry方式注册,可以借助ShimPluginRegistry来注册老版本的插件,新版本的插件直接用flutterEngine.plugins.add()方法添加就行了。不需要使用自动生成的GeneratedPluginRegistrant类
- MethodChannel在io.flutter.app.FlutterActivity(v1版本)中使用的是flutterView,在io.flutter.embedding.android.FlutterActivity(v2版本)中可以用flutterEngine.dartExecutor替代
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
// v2 version plugin register
flutterEngine.plugins.add(CameraPlugin())
...
// v1 version plugin register
val registry = ShimPluginRegistry(flutterEngine)
FluttertoastPlugin.registerWith(registry.registrarFor("io.github.ponnamkarthik.toast.fluttertoast.FluttertoastPlugin"))
...
MethodChannel(flutterEngine.dartExecutor, CHANNEL).setMethodCallHandler { ... }
}
Json序列化,代码手动生成命令
flutter pub run build_runner build