前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FlutterUnit 3.0 全面升级 - 国际化、导航2.0、项目结构

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

作者头像
张风捷特烈
发布2024-02-23 08:17:49
1280
发布2024-02-23 08:17:49
举报

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

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

image.png
image.png

1. 国际化的支持

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

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

移动端

移动端

移动端

桌面端

桌面端


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

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

image.png
image.png

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

image.png
image.png

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

代码语言:javascript
复制
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 的初心。

image.png
image.png

2. 导航 2.0 的支持

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

image.png
image.png

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

image.png
image.png

3. 项目结构优化

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

image.png
image.png

4. 未来展望

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

image.png
image.png

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


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

image.png
image.png
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 国际化的支持
  • 2. 导航 2.0 的支持
  • 3. 项目结构优化
  • 4. 未来展望
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com