簡體   English   中英

Flutter:堆棧溢出錯誤,沒有對該錯誤的解釋

[英]Flutter: Stack Overflow error with no explanation for the error

這是我得到的錯誤。 myApp 小部件或交易數據 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,所以出現了錯誤。 我對 flutter 還很陌生,我還在練習。



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

這是交易數據的代碼

問題是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 object 初始化的一部分進行初始化,因此我們創建了一個無限循環,因為此列表需要創建兩個TransactionData對象,然后又需要創建新的TransactionData對象等等......

我不確定此列表的目的是什么,但解決方案是將其移出此 class 或使其成為例如 static 因此僅存在一個列表副本,這些副本在所有TransactionData對象之間共享。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM