参数类型“Future<Widget>”无法赋值给参数类型“Widget”。

4

我需要在 无状态小部件 中使用 pdfImageFromImageProvider 函数。那么,是否可以使用无状态小部件来解决此问题?

Future<Widget> getWidgetAsync(double size) async {
PdfImage val = await pdfImageFromImageProvider(
  pdf: pdf.document,
  image: fw.AssetImage('assets/' + iconPath),
);

return Container(
  width: size,
  height: size,
  decoration: BoxDecoration(
    color: layoutbg,
    shape: BoxShape.circle,
  ),
  child: Image(val),
);

}


3
你可以使用FutureBuilder创建你的子部件。https://api.flutter.dev/flutter/widgets/FutureBuilder-class.html - F-1
我们能在无状态widget中使用FutureBuilder吗? - jazzbpn
1
你在哪里调用 getWidgetAsync 函数? - Muldec
如果我错了,请纠正我。试一下。 - F-1
你能分享一下错误信息吗?如果你不提供更多细节,我无法帮助你。 - F-1
显示剩余3条评论
1个回答

0

你的方法必须返回 Future<Widget>,因为我理解你问题的标题是你的错误,这意味着你返回了一个 Widget 而不是 Future<Widget>。要做到这一点,你应该像这样将你的 widget 包装在 Future 中:

Future<Widget> getWidgetAsync(double size) async {
PdfImage val = await pdfImageFromImageProvider(
  pdf: pdf.document,
  image: fw.AssetImage('assets/' + iconPath),
);

return Future.value(Container(
  width: size,
  height: size,
  decoration: BoxDecoration(
    color: layoutbg,
    shape: BoxShape.circle,
  ),
  child: Image(val),
));

希望这个能够正常运行。

你遇到了什么样的错误?能否将所有的错误信息都放在你的问题下面? - Babken
在使用FutureBuilder的无状态小部件的正常情况下它有效。但是,在我的情况下,我正在使用:'package:printing / printing.dart'和'package:pdf / widgets.dart';。并且使用这些包不可能使用FutureBuilder。 - jazzbpn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接