(new)Flutter-國際化適配終結者

rhyme_lph發表於2020-01-23

1.介紹

首先在這裡提前祝大家新春大吉,最近發現有粉絲私聊我,Flutter i18n外掛在idea中的外掛市場已經找不到了,然後我就到Flutter i18n 官網 看到了作者的留言,大致意思是:由於作者的時間和可用性問題,外掛專案不再維護,並且,另一個更加輕便的專案給予我們使用,而今天,我們就來學習以下新專案的使用(純dart cli工具,無需安裝任何外掛,在這裡,感謝作者!也希望大家能到上面的官網給作者大大給個star)

2.安裝

開啟我們的專案,然後在專案根目錄下的pubspec.yaml檔案新增下面程式碼

dev_dependencies:
#new 
  flutter_l10n: ^0.1.3
#new 
複製程式碼

注意,這裡是放到dev_dependencies節點下,目的是在開發專案的時候才進行使用,而打包專案是不會把庫裡面的程式碼打包進來,然後我們在命令列下執行flutter pacakges get程式碼即可

3.新建.arb檔案

關於.arb檔案的介紹,可以到我上一篇文章進行檢視,在根目錄/lib下新建.arb檔案

新建.arb檔案.png
這裡新建了一個enzh,目的是支援英文和中文語言環境,內容也是跟之前使用的一樣

(new)Flutter-國際化適配終結者
完成之後,我們在命令列下執行flutter pub run flutter_l10n:build命令即可

(new)Flutter-國際化適配終結者

4.產物分析

執行命令之後,會生成三個檔案

image.png

  • l10n/s.dart主要用於初始化代理,獲取字串
  • l10n/strings_en.dart英文語言環境下的字串內容,對應string_en.arb檔案
  • l10n/string_zh.dart中文語言環境下的字串內容,對應string.zh.arb檔案

5.切換語言

切換語言的時候需要注意,更改的地方需要兩處

        MaterialApp(
              localizationsDelegates: const [
                S.delegate,
                GlobalMaterialLocalizations.delegate,
                GlobalWidgetsLocalizations.delegate
              ],
              //new
              locale: Locale('zh',''),
              localeResolutionCallback:(Locale locale, Iterable<Locale> supportedLocales) {
                return Locale('zh','');
              },
              //new
            // ...
            )
複製程式碼

我們可以把Locale('zh','')作為一個變數即可

6.最後

使用方法跟外掛的使用方法類似,但存在以下問題

  • 不支援語法
  • 不能夠通過alt+enter生成字串
  • supportedLocales: S.delegate.supportedLocales,該程式碼失效

如果有其它更新,該文章會一直更新,請持續關注。。。

相關文章