【问题标题】:How to solve Flutter error Column's children must not contain any null values, but a null value was found at index 0?如何解决 Flutter 报错 Column 的子项不能包含任何空值,但在索引 0 处发现了空值?
【发布时间】:2019-10-23 11:16:20
【问题描述】:

我正在学习并尝试使用一个有状态小部件来创建一个应用程序来显示一个列表。我的代码如下所示:

ma​​in.dart

import 'package:flutter/material.dart';
import './widgets/user_transactions.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Container(
          child: UserTransactions(),
        ),
      ),
    );
  }
}

stateul 小部件代码是: user_transactions.dart

import 'package:flutter/material.dart';
import '../models/transaction.dart';

class UserTransactions extends StatefulWidget {
  @override
  _UserTransactionsState createState() => _UserTransactionsState();
}

class _UserTransactionsState extends State<UserTransactions> {
  final List<Transaction> _userTransactionLists = [
    Transaction(name: 'boss 01'),
    Transaction(name: 'boss 02'),
    Transaction(name: 'boss 03'),
    Transaction(name: 'boss 04'),
  ];
  @override
  Widget build(BuildContext context) {
    print('==========================================');
    print(_userTransactionLists.length);
    return Column(
      children: _userTransactionLists.map((tx) {
        Text(tx.name);
        print(tx.name);
      }).toList(),
    );
  }
}

事务类看起来像这样:

Transaction.dart

import 'package:flutter/foundation.dart';

class Transaction {
  final String name;
  Transaction({@required this.name});
}

但得到错误:

══╡ 小部件库发现异常 ╞═════════════════════════════════════════════════ ══════════ 在构建 UserTransactions(dirty, state: _UserTransactionsState#c1fe3): 列的子项不得包含任何空值,但空值是 在索引 0 处找到 相关的导致错误的小部件是: UserTransactions org-dartlang-app:///packages/test_01/main.dart:14:18

我试了很久还是没搞清楚。当我要调试时,我正在使用打印行得到正确的输出。如下所示:

【问题讨论】:

    标签: flutter


    【解决方案1】:
    @override
    Widget build(BuildContext context) {
        print('==========================================');
        print(_userTransactionLists.length);
        return Column(
          children: _userTransactionLists.map((tx) {
           print(tx.name);
           return Text(tx.name);
          }).toList(),
        );
      }
    

    您收到此错误是因为您没有返回任何值,所以您的 tolist() 方法正在重新调整空对象列表

    【讨论】:

    • 在我的情况下不适用于下拉映射项
    猜你喜欢
    • 1970-01-01
    • 2022-12-03
    • 2020-12-08
    • 2020-12-02
    • 1970-01-01
    • 2021-06-10
    • 2021-10-29
    • 2020-03-04
    • 2022-10-14
    相关资源
    最近更新 更多