Новые документы Flutter https://flutter.io/docs/development/accessibility-and-localization/internationalization#an-alternative-class-for-the-apps-localized-resources говорит нам, что мы должны использовать SynchronousFuture.Также предоставляет нам полный исходный код здесь;https://github.com/flutter/website/blob/master/src/_includes/code/internationalization/minimal/main.dart
Я слежу за чтением и смотрю на пример.Я также создал пример, как показано выше по ссылке.Тем не менее, я получаю ту же ошибку.Любая идея, почему документация и пример все еще имеют ошибку?
https://flutter.io/docs/development/accessibility-and-localization/internationalization#appendix-updating-the-ios-app-bundle имеет раздел приложения, в котором говорится об обновлении пакета приложения для iOS.Я тоже пытаюсь следовать этому, но мне не удалось добавить другой язык, как показано ниже.Он показывает немецкий язык, но не показывает турецкий или русский язык.Есть идеи почему?Или какая-нибудь работа вокруг?
Следуйте документации Флаттера, как я писал выше.Я использую недействительные Caches / Restart и пытаюсь собрать, и я получил другую ошибку, и я предполагаю, что очень близко подошел к ее достижению, если получу и помогу.
Новая ошибка: метод '[]' былназывается ноль.Получатель: null Пробный вызов.
Конец https://github.com/flutter/flutter/issues/24879 имеет код и изображение.
Данные json TR:
{
"title": "Merhaba dünya"
}
Данные json EN:
{
"title": "Hello world"
}
language_localization.dart:
import 'dart:async';
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
// TODO: CLASS - (DemoLocalizations) ##########################################
class DemoLocalizations {
DemoLocalizations(this.locale);
final Locale locale;
static DemoLocalizations of(BuildContext context) {
return Localizations.of<DemoLocalizations>(context, DemoLocalizations);
}
Map<String, String> _sentences;
Future<bool> load() async {
String data = await rootBundle.loadString(
'packages/capital_internationalized/resources/lang/${this.locale
.languageCode}.json');
Map<String, dynamic> _result = json.decode(data);
this._sentences = new Map();
_result.forEach((String key, dynamic value) {
this._sentences[key] = value.toString();
});
return true;
}
String trans(String key) {
return this._sentences[key];
}
}
language_delegate.dart:
import 'package:flutter/material.dart';
import 'language_localization.dart';
import 'package:flutter/foundation.dart' show SynchronousFuture;
// TODO: CLASS - (DemoLocalizationsDelegate) ##################################
class DemoLocalizationsDelegate extends LocalizationsDelegate<DemoLocalizations> {
const DemoLocalizationsDelegate();
@override
bool isSupported(Locale locale) => ['en', 'tr'].contains(locale.languageCode);
@override
Future<DemoLocalizations> load(Locale locale) {
// Returning a SynchronousFuture here because an async "load" operation
// isn't needed to produce an instance of DemoLocalizations.
return SynchronousFuture<DemoLocalizations>(DemoLocalizations(locale));
}
@override
bool shouldReload(DemoLocalizationsDelegate old) => false;
}
Ошибка здесь:
String trans(String key) {
return this._sentences[key];
}
And the error:
Initializing hot reload...
Syncing files to device iPhone 6...
flutter: ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
flutter: The following NoSuchMethodError was thrown building Builder(dirty):
flutter: The method '[]' was called on null.
flutter: Receiver: null
flutter: Tried calling: []("title")