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 更多的魅力。

相关推荐
AnalogElectronic2 小时前
问题记录,在使用android studio 构建项目时遇到的问题
android·ide·android studio
我爱松子鱼2 小时前
mysql之InnoDB Buffer Pool 深度解析与性能优化
android·mysql·性能优化
江上清风山间明月5 小时前
Flutter开发的应用页面非常多时如何高效管理路由
android·flutter·路由·页面管理·routes·ongenerateroute
子非衣9 小时前
MySQL修改JSON格式数据示例
android·mysql·json
openinstall全渠道统计12 小时前
免填邀请码工具:赋能六大核心场景,重构App增长新模型
android·ios·harmonyos
双鱼大猫12 小时前
一句话说透Android里面的ServiceManager的注册服务
android
双鱼大猫12 小时前
一句话说透Android里面的查找服务
android
双鱼大猫12 小时前
一句话说透Android里面的SystemServer进程的作用
android
双鱼大猫12 小时前
一句话说透Android里面的View的绘制流程和实现原理
android
双鱼大猫13 小时前
一句话说透Android里面的Window的内部机制
android