有没有办法在函数中加载 Flutter 中的图像而无需访问 BuildContext?
Flutter可以预加载图片,但precacheImage()需要BuildContext,使用起来不方便。
我想在不支持的initState()StatefulWidget 方法中加载图像。precacheImage()
关于预加载图像存在一个未解决的问题,表明当前不支持在没有 BuildContext 的情况下加载图像。
小智 1
我知道两种解决方法,第一个是 initstate“延迟”,如下所示:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
第二种方法是像这样使用 didChangeDependency :
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();
}
}
Run Code Online (Sandbox Code Playgroud)
init boolean 是为了防止 didChangeDependecies 多次重复运行相同的代码
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
1569 次 |
| 最近记录: |