this is the error I get. is there a problem in the myApp widget or in the transaction data class?
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
var isPressed = false;
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider.value(value: TransactionData()),
],
child: MaterialApp(
theme: ThemeData(
primarySwatch: Colors.purple,
),
home: Scaffold(
appBar: AppBar(
title: Text(
"Personal Expenses",
style:
TextStyle(color: Colors.white, fontWeight: FontWeight.bold),
),
actions: <Widget>[
Icon(Icons.add),
],
backgroundColor: Theme.of(context).primaryColor,
),
body: Stack(
children: <Widget>[
TxDesign(),
isPressed ? AddTransaction() : Container()
],
),
floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat,
floatingActionButton: FloatingActionButton(
onPressed: () {
setState(() {
isPressed = true;
});
},
splashColor: Colors.yellowAccent,
child: (Icon(Icons.add)),
backgroundColor: Colors.orange,
foregroundColor: Colors.black,
),
),
),
);
}
}
任何人都知道该如何解决?如果需要,我可以提供TxDesign小部件和AddTransation小部件的代码。 起初我以为是因为我在彼此之上添加了TxDesign和AddTransaction,并且都具有Column,所以出现了错误。我是新手,但仍在练习。
class TransactionData with ChangeNotifier {
final String id;
final String title;
final DateTime subtitle;
final String price;
TransactionData({this.id, this.title, this.subtitle, this.price});
List<TransactionData> transactions = [
TransactionData(
id: 'tx1',
price: "69.99",
title: 'New Shoes',
subtitle: DateTime.now()),
TransactionData(
id: 'tx2', price: "70.0", title: 'New Bois', subtitle: DateTime.now()),
];
// List<TransactionData> get txData {
// return [...transactions];
// }
}
这是交易数据的代码
答案 0 :(得分:0)
问题在于TransactionData
包含以下列表:
List<TransactionData> transactions = [
TransactionData(
id: 'tx1',
price: "69.99",
title: 'New Shoes',
subtitle: DateTime.now()),
TransactionData(
id: 'tx2', price: "70.0", title: 'New Bois', subtitle: DateTime.now()),
];
由于此列表将作为TransactionData
对象初始化的一部分进行初始化,因此我们创建了一个无限循环,因为此列表需要创建两个TransactionData
对象,然后又需要创建新的{ {1}}个对象,依此类推...
我不确定此列表的目的是什么,但是解决方案是将其移出该类或使其成为例如静态,因此列表中只有一个副本,并且在所有TransactionData
对象之间共享。