1.介紹國際化所需的包。
2.在Flutter節點下添加generate,在重啟或熱更新時實時更新翻譯文件。
3.在根目錄下添加文件l10n.yaml,配置實時更新內容。
4.將以下配置添加到根小部件的MaterialApp中,大多數配置在第三步中會自動更新。如果編譯器無法自動識別,可以手動導入以下包:導入' package:flute _ gen/gen _ l 10n/app _ localization . dart ';
5.編譯翻譯文件,在lib/I10n的目錄下添加app_zh.arb和app_en.arb兩個新文件(如果要指定國家代碼,可以創建為app_zh_CN.arb和app_en_US.arb)。文件使用Json語法,Vscode等編輯器也有相應的語法插件。至於翻譯語法,
註意:app代表變量名,後面可以用AppLocalizations.of(context)!。app,切換時會根據對應的翻譯文件顯示語言。
@app代表app變量的描述,是給翻譯者看的,與代碼運行無關。
模板句,有時候要實現壹句類似“倒計時20秒”只有數字變化的句子。這時就形成了壹個模板插值句,在模板中插入數字。上面的hit6實現了這樣壹個語法,最終會翻譯成壹個函數,讀者可以自己嘗試壹下。
關於iOS平臺
嘗試過國際化的讀者可能會發現,在iOS平臺上無法成功完成切換(上述全局變量方法與使用全局狀態管理的實現方法有本質區別,註意區分)。這是因為iOS應用有自建的語言環境管理機制,所以iOS應用采用上述方法來適應國際化是無效的。為了讓iOS應用程序支持國際化,需要在原生iOS項目中進行額外的配置。使用Xcode打開Flutter項目的原生iOS項目,切換到項目面板,然後在本地化選項配置中添加中文支持。
Android/ios平臺的權限處理是不可避免的。作為壹個演示應用,這個應用會要求盡可能多的權限,但它被設計成在用戶安裝後第壹次打開時只要求壹次,之後就不會主動要求,只在用戶需要使用相關功能時引導用戶給予權限。權限管理的實現相對簡單。可以參考permission_handler包,添加以下代碼,在APP啟動時調用壹次requestAllPermission函數。
下壹章:主題切換,歡迎頁,指南頁,
同名小破站,同步文章,定時直播節目,有興趣可以移步。