【问题标题】:FutureBuilder block null issueFutureBuilder 块空问题
【发布时间】:2021-11-23 05:14:54
【问题描述】:

错误:正文可能正常完成,导致返回“null”,但返回类型可能是不可为空的类型。 尝试在末尾添加 return 或 throw 语句。

我收到 FutureBuilder 行的此错误,但我找不到解决方法。问题是我不能在这里解决问题。

任何帮助将不胜感激

Widget build(BuildContext context) => Scaffold(
        body: FutureBuilder<Article>(
          future: _futureArticle,
          builder: (BuildContext context, AsyncSnapshot<Article> snapshot) {
            if (snapshot.hasData) {
              final article = snapshot.data?.data;
              CustomScrollView(
                slivers: [
                  SliverAppBar(
                    // backgroundColor: Colors.red,
                    expandedHeight: 200,
                    floating: true,
                    pinned: true,
                    flexibleSpace: FlexibleSpaceBar(
                      background: Image.network(article == null
                          ? 'https://www.tonymacx86.com/attachments/2019-02-05-07-50-43-jpeg.385401/'
                          : article.imageUrl!),
                      title: Text('${article!.title}'),
                      centerTitle: true,
                    ),
                    leading: const Icon(Icons.arrow_back),
                    actions: const [
                      Icon(Icons.settings),
                      SizedBox(width: 12),
                    ],
                  ),
                  buildImages(),
                ],
              );
            }
            
            
          },
          
        ),
      );

  Widget buildImages() => SliverToBoxAdapter(
        child: Card(
          elevation: 4.0,
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(10.0),
          ),
          child: ListTile(
            // leading: Image.network(article.imageUrl),
            title: Text(
              'Title: ',
            ),
            subtitle: Text(
              'Content: ',
            ),
          ),
        ),
      );
}

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    您必须 return 构建器函数中的小部件。

    Widget build(BuildContext context) => Scaffold(
            body: FutureBuilder<Article>(
              future: _futureArticle,
              builder: (BuildContext context, AsyncSnapshot<Article> snapshot) {
                if (snapshot.hasData) {
                  final article = snapshot.data?.data;
               return   CustomScrollView(
                    slivers: [
                      SliverAppBar(
                        // backgroundColor: Colors.red,
                        expandedHeight: 200,
                        floating: true,
                        pinned: true,
                        flexibleSpace: FlexibleSpaceBar(
                          background: Image.network(article == null
                              ? 'https://www.tonymacx86.com/attachments/2019-02-05-07-50-43-jpeg.385401/'
                              : article.imageUrl!),
                          title: Text('${article!.title}'),
                          centerTitle: true,
                        ),
                        leading: const Icon(Icons.arrow_back),
                        actions: const [
                          Icon(Icons.settings),
                          SizedBox(width: 12),
                        ],
                      ),
                      buildImages(),
                    ],
                  );
                }
                
                
              },
              
            ),
          );
    

    即使snapshot.hasDatafalse,你也必须返回一些东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-02
      • 2012-03-16
      • 2023-01-19
      • 2020-01-05
      • 2020-04-12
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多