提问人:Dani 提问时间:11/8/2023 最后编辑:Dani 更新时间:11/9/2023 访问量:24
Flutter:更改语言仅更新当前页面
Flutter: change language only updates the current page
问:
这是我在更改语言环境时所拥有的:
if (newLang is! String) return;
_language = newLang;
changeLocale(context, newLang);
Locale(newLang, ''); // method 1
MyApp.of(context)!.setLocale(Locale.fromSubtags(languageCode: newLang)); // method 2
Provider.of<TimesAp>(context, listen: false).changeLanguage(newLang); // method 3
});
如您所见,我添加了 2 个我正在检查的额外方法,但它们似乎都不起作用,所以我认为问题可能出在其他地方。
void setLocale(Locale value) {
setState(() {
_locale = value; // method 2
});
}
@override
Widget build(BuildContext context) {
final localizationDelegate = LocalizedApp.of(context).delegate;
return MultiProvider(
providers: [
ChangeNotifierProvider<TimesAp>(create: (_) => TimesAp()), // method 3
],
child: MaterialApp(
debugShowCheckedModeBanner: false,
// locale: getSavedLanguage(context),
locale: _locale, // method 2
supportedLocales: localizationDelegate.supportedLocales,
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
localizationDelegate
],
方法3:
class TimesAp extends ChangeNotifier {
String locale = 'en';
changeLanguage(String newLang) {
locale = newLang;
updateUI();
}
updateUI() {
notifyListeners();
}
}
我有登陆和选项页面,我在那里进行语言更新。对于那个页面,一切都变了,但当我回去时,什么也没变。当我刷新时会这样做(我将其保存在共享首选项中)。
https://zapp.run/edit/flutter-z7ec06l27ed0?entry=lib/main.dart&file=lib/options.dart
答:
0赞
Dani
11/9/2023
#1
缺少 2 件事:
LocalizationProvider(
state: LocalizationProvider.of(context).state,
child: MaterialApp(
并且无法返回 consthome:
评论