Как мне предварительно загрузить изображения из ресурсов? - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь предварительно загрузить некоторые ресурсы, которые используются в PageView, как это ..

  @override
  void didChangeDependencies() {
    precacheImage(AssetImage("assets/images/background.png"), context)
      .then((result) {
        print('$result');
      });

    super.didChangeDependencies();
  }

Ожидаемый результат: значение результата в then () вернет предварительно загруженное изображение Фактический результат: значение результатаявляется нулевым

1 Ответ

0 голосов
/ 12 ноября 2018

Возвращаемое значение для precacheImage равно Future<void>, поэтому использование then для результата не вернет само изображение.

Один из самых простых способов его использования - использовать в методе build родительского виджета виджета, для которого вы хотите показать изображение следующим образом:

class ImagePage extends StatelessWidget{   
  @override
  Widget build(BuildContext context) {
    return Image.network("https://upload.wikimedia.org/wikipedia/commons/3/39/Periodic_table_large.png");
  }
}

Затем вы можете вызвать precacheImage в виджете перед тем, как перейти к ImagePage, например:

class TestWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    precacheImage(NetworkImage("https://upload.wikimedia.org/wikipedia/commons/3/39/Periodic_table_large.png"), context);
    return Center(
          child: RaisedButton(
        child: Text('Launch screen'),
        onPressed: () {
          Navigator.push(
            context,
            MaterialPageRoute(builder: (context) => ImagePage()),
          );
        },
      ));
  }
}

Таким образом, при нажатии кнопки для запуска ImagePage изображение уже будет загружено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...