【问题标题】:The property can't be unconditionally accessed because the receiver can be 'null'无法无条件访问该属性,因为接收者可以是“null”
【发布时间】:2022-08-15 01:48:25
【问题描述】:

嗨,我在尝试将 API 导入颤振时遇到两个问题,首先似乎无法从我的快照中读取数据,所以当我使用 if (snapshot.hasData) 函数时,它一直显示循环进度指示器。

第二个问题是当我尝试添加一个变量以允许我从 API 添加文本时,它给了我错误 \'The property can\'t be unconditionally access because the receiver can be \'null\'\'`

@override
 Widget build(BuildContext context) {
    return Scaffold (
      appBar: AppBar(
        title: Text(\'News App\'),
      ),
      body: Container(
        child: FutureBuilder<Welcome>(
          future: _Welcome,
          builder: (context, snapshot) {
            if (snapshot.hasData) {
              return ListView.builder(
                itemCount: 52,
                itemBuilder:(context, index) {
              var ticker = snapshot.data.ticker; //error here
              return Container(
                height: 100,
                child: Row(
                  children: [
                    Text(ticker)
                  ],
                ),
              );
            });
            } 
            else 
            return Center(child: CircularProgressIndicator());
          },
          
        ),
      )
    );
  }`

    标签: flutter api dart


    【解决方案1】:

    对于您的第一个问题,请尝试使用

    if (snapshot.connectionState == ConnectionState.done)
    

    对于您的第二个问题,请尝试添加感叹号以保证该值不为空

    var ticker = snapshot.data!.ticker;
    

    【讨论】:

    • 对于第一个,它现在给了我另一个错误。 “无法通过实例访问静态 getter 'done'。”第二个成功了!谢谢。
    • 啊,是的,对不起,我试图编辑帖子。你能像这样再试一次吗?
    【解决方案2】:
    1. 为您的构建器设置类型
    2. 创建变量并分配snapshot.data!
    3. 使用不带任何?! 的变量。与[] 一样简单的列表
      FutureBuilder<List<Orders>>(                         // 1
         future: futureOrders,
         builder: (context, snapshot) {
            if (!snapshot.hasData) {
               return const Center(child: CircularProgressIndicator());
            } else {
               final List<Orders> orders = snapshot.data!; // 2
               return ListView.builder(
                  itemCount: orders.length,                // 3
                  itemBuilder: (context, index) => _cartItemWidget(
                     id: orders[index].id,                 // 3
                     cost: orders[index].cost,             // 3
                     date: orders[index].createdAt));      // 3
            }
         },
      )
      

    【讨论】:

      猜你喜欢
      • 2022-08-15
      • 2021-09-21
      • 2021-07-13
      • 2021-08-05
      • 1970-01-01
      • 2022-01-11
      • 2021-09-21
      • 2021-08-12
      • 2023-03-05
      相关资源
      最近更新 更多