国产亚洲欧美人成在线,免费视频爱爱太爽了无码,日本免费一区二区三区高清视频 ,国产真实伦对白精彩视频

歡迎您光臨深圳塔燈網(wǎng)絡(luò)科技有限公司!
電話圖標 余先生:13699882642

網(wǎng)站百科

為您解碼網(wǎng)站建設(shè)的點點滴滴

Flutter 國際化

發(fā)表日期:2018-12 文章編輯:小燈 瀏覽次數(shù):2955

Flutter 官方鼓勵我們在寫 Flutter 應(yīng)用的時候直接從 MaterialApp 開始,原因是 MaterialApp 為我們集成好了很多 Material Design 所必須的控件。

在大多默認的情況下,Material 的組件是英文說明的,因此對應(yīng)中國的應(yīng)用來說,要做國際化處理。

Flutter 提供了國際化的處理包,要使用它先要引入。

dependencies: flutter_localizations: sdk: flutter 

之后在 MaterialApp 里添加。

import 'package:flutter_localizations/flutter_localizations.dart';new MaterialApp( title: 'Flutter Demo', theme: new ThemeData( primarySwatch: Colors.blue, ), home: new HomePage(title: ''), localizationsDelegates: [ // <-- 添加 GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, ], supportedLocales: [ // <-- 添加語言包 const Locale('zh', 'CH'), ], ) 

Dialog 中的文字是變成中文了。

自己配置語言包

上面是 flutter 配置的語言包,如果你的應(yīng)用有英文和中文兩個版本,那么需要自己配置語言包。

首先,定義一個 DemoLocalizations 類,這個類就是用于創(chuàng)建語言包的。

class DemoLocalizations { final Locale locale; DemoLocalizations(this.locale);static Map<String, Map<String, String>> _localizedValues = { 'en': { 'task title': 'Flutter Demo', 'titlebar title': 'Flutter Demo Home Page', 'click tip': 'You have pushed the button this many times:', 'inc':'Increment', }, 'zh': { 'task title': 'Flutter 示例', 'titlebar title': 'Flutter 示例主頁面', 'click tip': '你一共點擊了這么多次按鈕:', 'inc':'增加', } };get taskTitle { return _localizedValues[locale.languageCode]['task title']; } get titleBarTitle { return _localizedValues[locale.languageCode]['titlebar title']; } get clickTop { return _localizedValues[locale.languageCode]['click tip']; } get inc { return _localizedValues[locale.languageCode]['inc']; } static DemoLocalizations of(BuildContext context) { return Localizations.of(context, DemoLocalizations); } } 

定義完 DemoLocalizations 以后,LocalizationsDelegate 里初始化它。LocalizationsDelegate 是一個抽象類,需要去繼承它并實現(xiàn)。

class DemoLocalizationsDelegate extends LocalizationsDelegate<DemoLocalizations>{ const DemoLocalizationsDelegate();@override bool isSupported(Locale locale) { return ['en','zh'].contains(locale.languageCode); }@override Future<DemoLocalizations> load(Locale locale) { return new SynchronousFuture<DemoLocalizations>(new DemoLocalizations(locale)); }@override bool shouldReload(LocalizationsDelegate<DemoLocalizations> old) { return false; }static DemoLocalizationsDelegate delegate = const DemoLocalizationsDelegate(); } 

完成后,把 delegate 添加到 MaterialApp localizationsDelegates 里。

new MaterialApp( title: 'Flutter Demo', theme: new ThemeData( primarySwatch: Colors.blue, ), home: new HomePage(title: ''), localizationsDelegates: [ // <-- 添加代理 GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, DemoLocalizationsDelegate.delegate, ], supportedLocales: [ // <-- 添加語言包 const Locale('zh', 'CH'), ], ) 

接著使用它:

home: new MyHomePage(title: DemoLocalizations.of(context).titleBarTitle), 

是不是很復(fù)雜?是的比較復(fù)雜,這是官方推薦的做法。其實我們還可以定義一個全局的存儲空間,存儲這些變量在合適的時間段里使用。


本頁內(nèi)容由塔燈網(wǎng)絡(luò)科技有限公司通過網(wǎng)絡(luò)收集編輯所得,所有資料僅供用戶學(xué)習參考,本站不擁有所有權(quán),如您認為本網(wǎng)頁中由涉嫌抄襲的內(nèi)容,請及時與我們聯(lián)系,并提供相關(guān)證據(jù),工作人員會在5工作日內(nèi)聯(lián)系您,一經(jīng)查實,本站立刻刪除侵權(quán)內(nèi)容。本文鏈接:http://jstctz.cn/17559.html
相關(guān)APP開發(fā)