Flutter _TypeError(类型'Future<String>'不是类型'Future<Widget>?'的子类型)

Flutter _TypeError (type 'Future<String>' is not a subtype of type 'Future<Widget>?')

Firebase 存储中有这样一张照片:

我想把这张照片放在一个专栏中。我写了这样的代码:

class MainScreen extends StatefulWidget {
      @override
      State<MainScreen> createState() => _MainScreenState();
    }
    class _MainScreenState extends State<MainScreen> {
      @override
      Widget build(BuildContext context) {
        return Column(
          children: <Widget>[
            Container(
              height: 200,
              width: double.infinity,
              decoration: BoxDecoration(
                color: Colors.blueAccent,
                borderRadius: BorderRadius.only(
                  bottomLeft: Radius.circular(30),
                  bottomRight: Radius.circular(30),
                ),
              ),
              child: Column(
                children: [
                  FutureBuilder<Widget>(
                    future: downloadURLExample(),
                    builder: (BuildContext context, AsyncSnapshot<Widget> snapshot) {
                    if(snapshot.hasData)
                      return snapshot.data;
                    }
                  ),
                  SizedBox(height: 10),
                  Text(
                    "Hello",
                    style: TextStyle(
                      fontSize: 20,
                      fontWeight: FontWeight.bold,
                      color: Colors.white,
                    ),
                  ),
                ],
              ),
            ),
          ] 
        );
      }
    }
  Future<void> downloadURLExample() {
    var downloadURL = FirebaseStorage.instance.ref('defaultProfilePhoto').getDownloadURL();
    return downloadURL;
  }

当我运行这段代码时,我得到这样的错误:

_TypeError (type 'Future<String>' is not a subtype of type 'Future<Widget>?')

我该如何解决这个问题?在此先感谢您的帮助。

我查看了其他线程,但没有解决方案。

我假设您想在 UI 中显示图像。

试试这个:

  Future<Widget> downloadURLExample() async {
    var downloadURL = await FirebaseStorage.instance.ref('defaultProfilePhoto').getDownloadURL();
    return Image.network(downloadURL);
  }

您收到此错误是因为您从 _downloadURLExample 方法返回 Future<String>,但 FutureBuilder 小部件的 future 属性 的类型为 Future<Widget>因此你会收到类型不匹配错误。

使用此代码

FutureBuilder<String>(
                future: downloadURLExample(),
                builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
                if(snapshot.hasData)
                  return Image.network(snapshot.data);
                }
              ),


Future<String> downloadURLExample() {
    var downloadURL = FirebaseStorage.instance.ref('defaultProfilePhoto').getDownloadURL();
    return downloadURL;
  }