网站建设资讯

NEWS

网站建设资讯

flutter化,flutter特性

Flutter初始化

新建一个Flutter工程,android模块。

创新互联是一家专注于成都做网站、网站建设与策划设计,江阴网站建设哪家好?创新互联做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:江阴等地区。江阴做网站价格咨询:18980820575

1,只有一个Activity组件,它是Dart层绘制Widget的容器。

2,Application配置FlutterApplication。

应用Application配置io.flutter.app.FlutterApplication类,App首次启动时,初始化。

调用FlutterMain.startInitialization()方法。

initConfig方法,从AndroidManfest.xml配置的applicaion节点获取meta-data数据,初始化以下默认值。

这些值都是使用中用到的name,例如,抽取apk中asset资源时,flutter_assets打包目录,打包产物data名称。

initResources方法, 初始化资源。

在Flutter打包apk的asset目录下,包括fluttter_asset目录/资源项,将资源从apk中抽取,保存在 Context.getDir("flutter", 0) 目录下。

/data/user/0/包名/app_flutter目录。

在目录中创建一个时间戳文件,根据apk版本和包信息记录的lastUpdateTime更新时间,第二次启动时,若apk未更新,不需要再次抽取。

加载so库,libflutter.so,System.loadLibrary()。

主页面继承FlutterActivity,配置启动模式singleTop。

FlutterActivity类在io.flutter.app包, (区别io.flutter.embedding.android包), 组件生命周期委托给FlutterActivityDelegate类。

组件启动,onCreate方法。

FlutterMain.ensureInitializationComplete方法,确保资源成功抽取完成,创建FlutterView视图(io.flutter.view),继承SurfaceView类,setContentView方法,设置组件主布局即FlutterView视图。

最后,根据Bundle路径,runBundle()加载运行,

调用FlutterView的runFromBundle方法,入口点在dart的main方法,

通过FlutterNativeView,调用FlutterJNI的native方法。

nativeRunBundleAndSnapshotFromLibrary方法。

任重而道远

Flutter之国际化多语言

在说flutter国际化前,不得不提到,在uni-app中支持的Vue-i18n,两者有相似之处,也有差异的地方。

本篇借鉴了三篇热门帖子

Flutter中的国际化:如何写一个多语言的App

Flutter国际化完整例子

Internationalization - Make an Flutter application multi-lingual

只记录根据手机系统语言自动转换app语言

引入后,保存会自动加入安装此依赖

我们新建一个和"/lib"同级别的文件夹"/locale",然后在这个文件夹中新建两个文件,分别为"i18n_en.json" 和" i18n_zh.json"。再在"/lib"文件夹下创建和"main.dart"同级的"translation.dart"和"application.dart"。

  文件夹树现在是这个样子的:

MyApplication

  |

  +- android

  +- build

  +- images

  +- ios

  +- lib

   |

   +-main.dart

   +-translation.dart

   +-application.dart

  +- locale

   |

   +- i18n_en.json

   +- i18n_zh.json

  +- test

在pubspec.yaml继续加入json,引入静态资源

补充:如果需要强制转换的话(我自己没有用到)

Flutter 数据持久化

在开发应用的时候,有时候需要本地存储一个临时数据,这时候可以使用 Flutter 的 shared_preferences 插件,此插件在 iOS 上使用 NSUserDefaults,在 Android 上使用 SharedPreferences,为简单数据提供持久存储。

先安装依赖:

shared_preferences 使用的存储方式是 key-value 形式。

虽然使用键值存储非常简单方便,但它有一些限制:

shared_preferences 实例常用方法:


网站标题:flutter化,flutter特性
文章链接:http://cdweb.net/article/dsdgcpo.html