Bruno 3.2.0 版本发布 - 支持本地化、Pad 适配

avatar

昨日,我们发布了 Bruno 3.2.0 版本,距离上次发文共发布了两个版本,专注于解决社区反馈问题和文档完善,详见 CHANGELOG

为了更全面的了解开发者使用问题和更多的了解开发者对 Bruno 的期望,项目组于 9 月展开了一次问卷调研,收集到来自社区反馈的真实声音,其中呼声最高的是期望 Bruno 支持本地化多分辨率适配

本地化功能

原计划 8 月份上线的国际化功能虽迟但到,终于在该版本「v3.2.0」跟社区见面。组件库中 50+ 词条已全部支持自定义,并内置了全套 中文(BrnResourceZh)英文(BrnResourceEn) 配置。



使用步骤如下( Demo 路径)👇:

step1:配置自定义词条

可继承 BrnBaseResource 实现全部词条,也可单独继承内置中英文默认词条,下面以继承内置词条为例,部分词条替换为德语,其余词条仍使用英语:

class ResourceDe extends BrnResourceEn {  
  
  static Locale locale = Locale('de', 'DE');  
  
  @override  
  String get cancel => 'Abbrechen';  
  
  @override  
  String get confirm => 'bestätigen';  
  
  @override  
  String get loading => 'Wird geladen';  
  
  @override  
  String get ok => 'Ok';  
  
}

step2:配置词条

注意:配置词条须放在页面构建之前进行,否则无法获取正确的词条资源。

void main() {  
  BrnIntl.add(ResourceDe.locale, ResourceDe());  
  runApp(MyApp());  
}

step3:配置 Flutter 应用的多语言支持

更改 locale ,将新值保存在 ChangeLocalEvent.locale 静态变量中,发送通知。

// 更改 locale 静态变量并发送通知:
ChangeLocalEvent.locale =  Locale('de', 'DE');  
ChangeLocalEvent()..dispatch(context);
/// 通知类
class ChangeLocalEvent extends Notification{  
  static Locale locale = Locale('zh', 'CN');  
}

WidgetsApp 类型的根节点分别配置 localelocalizationsDelegatessupportedLocales,如下代码注释中所示4个部分。

import 'package:flutter_localizations/flutter_localizations.dart';

@override  
Widget build(BuildContext context) {  
  return NotificationListener<ChangeLocalEvent>(  
    onNotification: (_) {  
	  // 1、接收 locale 的变化通知,并刷新页面
      setState(() {});  
      return true;  
    },  
    child: MaterialApp(  
      locale: ChangeLocalEvent.locale,  //2、设置最新值。
      localizationsDelegates: [  
        GlobalMaterialLocalizations.delegate,  
        GlobalWidgetsLocalizations.delegate,  
        GlobalCupertinoLocalizations.delegate,  //本地化代理
        BrnLocalizationDelegate.delegate,  //3、配置 Bruno 本地化代理,用于获取正确的词条资源
      ],  
      supportedLocales: [  
        Locale('en', 'US'),  
        Locale('zh', 'CN'),  
        Locale('de', 'DE'),  // 4、配置所支持的语言,这里是德语
      ],  
      title: 'Flutter Example',  
      theme: ThemeData(  
        primarySwatch: Colors.blue,  
      ),  
      home: HomePage(),  
    ),  
  );  
}


多分辨率适配

主题定制一直都是解决多分辨率适配的最佳方式,调研中开发者反馈 希望主题定制自定义的程度可以更高,这大概是多分辨率适配的卡点问题。目前 Bruno 组件主题定制的覆盖度确实不高,项目组也已计划在后续的版本中持续增加组件的主题配置粒度。

当然正如之前所说的 Bruno 一直致力于带给开发者愉悦的使用体验,因此我们也将内部积累的 Pad 侧设计物料开源,同时配合开出的还有适配 Pad 规范产出的一套主题配置,详见 Pad 主题配置



Pad 设备「竖屏」切换主题配置效果



需要注意的是本次有对 Sketch Plugin 做更新,由于之前的疏忽 Sketch Plugin 遗漏了一个组件的图层标注,如果你正在使用建议进入官网下载最新版『 新版的资源包将于元旦节后更新,敬请期待 !』

遗憾的事

对于 iOS Demo 在近半年时间无法下载的问题我们深感抱歉,由于资源的限制,我们将不再提供 iOS Demo。但这并不会阻断开发者了解 Bruno,开发者仍可通过每次 发版附件 中下载 Android APK,或者进入官网使用 在线演示 功能查阅 Demo。如果你对 Bruno 感兴趣,欢迎进入 Bruno Github 主页 Fork 工程。

欢迎 leftcoding 的加入

自 Bruno 发布以来 leftcoding 提了诸多 pull request 以修复 bruno 问题 ,并持续活跃在 Bruno 社区,对 Bruno 的发展提出了非常宝贵的建设性意见。Bruno 项目组在 9 月份正式邀请 leftcoding 成为项目组成员,现已参与到 Bruno 的日常维护和社区建设中。我们期待的更多对开源保有热情和喜欢 Bruno 的开发者的加入,共同完善 Bruno 、丰富 Flutter 生态✊。

最后

首次发布至今已有一年的时间,Bruno 逐渐让大家熟知也不断有新的开发者关注,每个月能收到数十条建议和错误的报告,感谢一路陪伴的开发者们🌱。



特别感谢用户体验中心「伟耀」对本次开源发版的支持。

快速触达

官网:bruno.ke.com

Github:github.com/LianjiaTech…

pub:pub.dev/packages/br…

为了增进 Bruno 用户间交流要求,我们建立了社区群,欢迎开发者入群交流~