/flutter_demo

常见的基础功能、依赖原生的插件、通用的组件库等

Primary LanguageDart

flutter_demo

flutter开发练习

开发包括app常见的基础功能、依赖原生的插件、通用的组件库等。

Flutter层功能

flutter层的功能,一些基础的widget、Animation、state manage

官方Cookbook

  • 搜索框
  • 网络请求(异步加载和json序列化)
  • 底部tabs切换
  • 顶部tabs切换
  • PageView(滑动切换页面)
  • Redux集成
  • Sqlite(本地数据库)
  • SharedPreferences(键值对本地存储)
  • 动画
  • 表单
  • 相机
  • app打包
  • 图片选择上传
  • BLoC集成(State管理框架)
  • Scoped Model集成(State管理框架)
  • 屏幕适配
  • ChangeNotifier

通用组件库

  • 级联选择器(地址选择)

Native Plugin

Flutter提供了丰富的插件接口,flutter层可以很好的和native层进行交互

  • MethodChannel方式调用原生
  • 简单视图类型插件,文本视图使用原生控件(TextView/UILabel)显示
  • Android高德地图集成
  • iOS高德地图集成
  • Android&iOS高德地图功能完善
  • 二维码扫描

Wallie app

  • 登陆页面
  • 首页tabs切换
  • Bill页面(下拉刷新)
  • 集成Redux

效果示例

名称 显示效果 名称 显示效果
水滴Tab切换 太极动画
Android高德地图 iOS高德地图
地址选择器

参考资料

原生插件部分

官方的插件项目flutter plugins

Writing custom platform-specific code

在Flutter中嵌入Native组件的正确姿势是...

Flutter PlatformView: How to create Widgets from Native Views

How to use Native UIs in Flutter with Swift & Platform View

其他

Flutter 1.12版本以前的插件升级(v1 -> v2)

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 Serialize

官方文档:JSON and serialization

Json序列化,代码手动生成命令

flutter pub run build_runner build