Flutter FutureBuilder — как вернуть компонент, даже если данные равны нулю?

#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. снимок. данные являются либо нулевыми, либо строкой и снимком.ошибка равна нулю, если снимок. данные не являются нулевыми или являются объектом.