Flutter:堆栈溢出错误,没有错误说明

时间:2020-07-28 11:09:12

标签: android flutter object dart widget

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];
  // }
}

这是交易数据的代码

1 个答案:

答案 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对象之间共享。

相关问题