此错误属于udemy Maximilian schwarzmuller颤振航向错误。这是代码:我已经提供了字符串值,我仍然得到非空字符串提供给文本小部件错误在(' txt .title'),
import 'package:flutter/material.dart';
import './transaction.dart';
void main() => runApp(MyWidget());
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'flutter app',
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
final List<Transaction> transactions = [
Transaction(
id: '01',
title: 'azeem',
amount: 90.98,
date: DateTime.now(),
),
Transaction(
id: '02',
title: 'azeem',
amount: 90.98,
date: DateTime.now(),
)
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Expense App'),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
width: double.infinity,
child: Card(
child: Text('Text_1'),
color: Colors.blue,
),
),
Column(
children: transactions.map((tx) {
return Card(
child: Text(tx.title),
);
}).toList(),
),
],
),
);
}
}
我已经为这个函数提供了字符串,但是我得到了一个错误。
输入图片描述
try this;
Column(
children: transactions.map((tx) {
return Card(
child: Text(tx.title ?? "default text on null"),
);
}).toList(),
),
你有多种方法来解决这个问题
1。
Column(
children: transactions.map((tx) {
return Card(
child: Text(tx.title!= null ? tx.title : "Default Title"),
);
}).toList(),
),
2。
Column(
children: transactions.map((tx) {
return Card(
child: Text(tx.title ?? "Default Title"),
);
}).toList(),
),
3。
if(tx.title != null)
Column(
children: transactions.map((tx) {
return Card(
child: Text(tx.title!),
);
}).toList(),
),
4。
Column(
children: transactions.map((tx) {
return Card(
child: Text(tx.title.toString()),
);
}).toList(),
),
事务的标题字段可能没有初始化。您使用的是null安全的Dart版本吗?你的Transaction类应该是这样的:
class Transaction {
String id;
String name;
double amount;
DateTime date;
Transaction({required this.id, required this.name, required this.amount, required this.date});
}