有没有一种方法可以在不访问BuildContext的情况下在Flutter中加载图像?
Flutter可以使用precacheImage()
预加载图像,该图像需要BuildContext并且使用起来不方便。
我想在initState()
不支持的StatefulWidget的precacheImage()
方法中加载图像。
关于预加载图像存在一个未解决的问题,即建议当前不支持不使用BuildContext加载图像。
答案 0 :(得分:1)
我知道两种解决方法,第一种是像这样的“延迟”初始化状态:
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:
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在多次重新运行时运行相同的代码
希望这会有所帮助。