FlutterUnit 3.0 全面升级 - 国际化、导航2.0、项目结构

FlutterUnit 是张风捷特烈的一个开源的 Flutter 全平台 项目,支持 Android、iOS、Windows、MacOS、Linux、Web 六大主流平台。项目通过交互应用的形式,整理收录 Flutter 内置组件、实用有趣的知识集锦、辅助工具等要点,辅助 Flutter 开发者更快捷、优化地体验 Flutter 开发。

春节期间,优化了一下 FlutterUnit 在国际化、导航2.0、项目结构优化之后,现在推出 FlutterUnit 3.0 版本。大家可以在 FlutterUnit 项目的 release 中下载体验。


1. 国际化的支持

目前已经初步支持国际化,对于应用中非内容的固定文字,进行了国际化处理,目前只支持简体中文和英文两种语言,后期有时间会支持其他语言。

  • 移动端在: 我的/应用设置/多语言 中切。
  • 桌面端在: 设置/多语言 中切换。
移动端 移动端 移动端
桌面端 桌面端

关于 Flutter 应用的国际化,我发布过对应的 B站视频。

FlutterUnit 中采用功能需求的分包 package 管理,对于国际化的需求,提取出 l10n 的模块包,这样需要使用国际化的模块,引入 l10n 即可:


国际化最主要的还是体力活,收集需要国际化的字符串,然后进行翻译、在代码中替换。在此感谢 女友 帮忙整理国际化的文字资源。另外,国际化功能属于全局的状态变化,和之前的主题色、字体类似,在全局状态中增加国际化的数据,通过 AppConfigBloc 进行维护:

在 Dart 枚举支持数据成员之后,这类具有固定描述信息的可枚举数据,处理起来就非常方便,比如这里定义 Language 枚举作为国际化的核心数据,就具有很好的语义性:

dart 复制代码
import 'dart:ui';

enum Language {
  zh_CN(locale: Locale('zh','CN'), label: '简体中文'),
  en_US(locale: Locale('en','US'), label: 'English');

  final Locale locale;
  final String label;

  const Language({
    required this.locale,
    required this.label,
  });
}

组件的信息目前并没有进行国际化,这是一个很庞大的任务。我一个人很难去维护,后面我会定义一些描述规范,通过开源的力量,让所有人都可以参与到内容的国际化维护之中,这也是 FlutterUnit 的初心。


2. 导航 2.0 的支持

《Flutter 路由导航: 源码探索与实战》 小册完成后,我对 Flutter 导航 2.0 有了全面的认知。因此 FlutterUnit 也很快地迁移到了导航 2.0。其中最大的交互优势在于 FlutterUnit 桌面端终于拥有了 局部导航 的能力。如下所示,进入详情页等界面后,左侧的导航栏是固定存在的,而非全屏幕的跳转,这样体验会好很多。


如果自己使用 Flutter 内置的导航 2.0,会比较麻烦。 这里使用了官方推出的 GoRouter, 它是一个优秀的对导航 2.0 体系使用的封装,可以让开发者非常便利地使用声明式的导航操作。对导航感兴趣的朋友,可以支持一下我的路由小册 ~


3. 项目结构优化

FlutterUnit 中的各个模块的关联性并不强,非常适合模块化的分包处理。将功能需求分割成相互独立的模块,模块间可以相互依赖访问对方的功能。在主项目中,维护导航的相关工作,这就是我目前通过 FlutterUnit 对项目结构的思考。


4. 未来展望

一直想做些日常辅助的工具,后续将会着重对工具宝箱进行开发。通过 Dart 实现一些有用的小工具,当然并不限于编程开发的范畴。

之前通过 SpringBoot 为 FlutterUnit 开发过后端,但一直没有继续推进。最近在研究 rust 的后端开发,想把 SpringBoot 的项目迁移到 rust ,并搭建一套完善的接口。云上的 FlutterUnit 也是我一直的夙愿,但由于服务器、开发时间等种种原因,推进很慢。


最后,感谢大家的支持,FlutterUnit 的 star 一直以稳定的速度增加,目前已经达到 7K ,我也会一直维护下去,收录更过有趣实用的内容,让大家体验 Flutter 更多的魅力。

相关推荐
我命由我1234538 分钟前
Android 动态申请 REQUEST_INSTALL_PACKAGES 权限问题:申请权限失败
android·java·开发语言·java-ee·android studio·android jetpack·android-studio
追随远方2 小时前
深入解析OkHttp与Retrofit:Android网络请求的黄金组合
android·okhttp·retrofit
nukix2 小时前
Android Studio Kotlin 中的方法添加灰色参数提示
android·kotlin·android studio
飞露2 小时前
android studio clone子分支
android·ide·android studio
吴胜ws2 小时前
Android Studio 中 build、assemble、assembleDebug 和 assembleRelease 构建 aar 的区别
android·ide·android studio
tangweiguo030519872 小时前
Android SwitchButton 使用详解:一个实际项目的完美实践
android
金融数据出海3 小时前
使用PHP对接东南亚、日本、印度和印度尼西亚股票数据源
android·开发语言·php
do.ris3 小时前
Git上传项目到GitHub
git·github
南国樗里疾7 小时前
Android 14 解决打开app出现不兼容弹窗的问题
android
IT小码哥丶7 小时前
HarmonyOS实战:自定义时间选择器
android·harmonyos