不带BuildContext的预加载映像 [英] Preload Image Without BuildContext

查看:38
本文介绍了不带BuildContext的预加载映像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有一种方法可以在不访问BuildContext的情况下在Flutter中加载图像?

Is there a way to load images in Flutter in a function without access to a BuildContext?

Flutter可以使用 precacheImage()预加载图像,该图像需要BuildContext并且使用起来不方便.

Flutter can preload images with precacheImage() which requires a BuildContext and is inconvenient to use.

我想在 precacheImage()不支持的StatefulWidget的 initState()方法中加载图像.

I would like to load images in the initState() method of a StatefulWidget which precacheImage() does not support.

关于预加载图像存在一个未解决的问题,建议当前不支持在不使用BuildContext的情况下加载图像.

There is an open issue about preloading images that suggests loading images without a BuildContext is not currently supported.

https://github.com/flutter/flutter/issues/26127

推荐答案

我知道两种解决方法,第一种是初始化状态"delayed",像这样:

I know two workarounds, first one is initstate "delayed" like so :

import 'package:flutter/material.dart';

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  var image;

  @override
  void initState() {
    super.initState();
    Future.delayed(Duration.zero).then((_) {
      //Your code here
    });
  }

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

第二种方法是像这样使用didChangeDependencies:

Second way is to use didChangeDependencies like so :

import 'package:flutter/material.dart';

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  var image;

  bool init = true;  

  @override
  void didChangeDependencies() {
    if (init) {
      init = false;
      //your code here
    }
    super.didChangeDependencies();
  }

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

init boolean是为了防止didChangeDependecies在多次重新运行时运行相同的代码

init boolean is to prevent didChangeDependecies from running same code so many time as it reruns alot

希望这会有所帮助.

这篇关于不带BuildContext的预加载映像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆