#flutter #flutter-futurebuilder
Вопрос:
У меня странная проблема. Я вызываю метод для получения локали устройства.
Widget build(BuildContext context) {
return FutureBuilder<String>(
future: platform.invokeMethod('locale'),
builder: (context, snapshot) {
print(snapshot.data);
if (snapshot.error is MissingPluginException) {
return App(
locale: "is",
);
}
if (snapshot.data != null) {
print(snapshot.data);
return App(
locale: snapshot.data,
);
} else {
return App(locale: "is");
}
},
);
}
}
Но я хочу, чтобы значение по умолчанию было «есть», если, например, нет подключения к Интернету. Однако, когда я тестирую его, экран просто пуст. Он работает при наличии подключения к Интернету и возвращает компонент приложения с языковым стандартом. Но этого не произойдет, если он выключен.
Я тоже пытался:
Widget build(BuildContext context) {
return FutureBuilder<String>(
future: platform.invokeMethod('locale'),
builder: (context, snapshot) {
print(snapshot.data);
if (snapshot.error is MissingPluginException) {
return App(
locale: "is",
);
}
if (snapshot.data != null) {
print(snapshot.data);
return App(
locale: snapshot.data,
);
}
return App(locale: "is");
},
);
}
}
Но это не сработает.
Комментарии:
1. каковы значения
snapshot.data
иsnapshot.error
что печатается?2. снимок. данные являются либо нулевыми, либо строкой и снимком.ошибка равна нулю, если снимок. данные не являются нулевыми или являются объектом.