簡體   English   中英

腳手架中的有狀態小部件

[英]Stateful widget in Scaffold's body

我不明白為什么在顫振中不可能有這樣的結構:

//...
Scaffold(
  //...
  body: myPage(dataList[index])
)
//...

其中myPage是擴展statefulWidget並返回ListView的類。 它需要一個存儲在數組中的數據參數。 我想在更改索引時更改支架的主體,例如使用導航抽屜。

我注意到:

  • 如果myPage擴展statelessWidget一切正常,
  • 如果我有擴展statefulWidget的不同頁面類,則一切正常,
  • 但是如果我的myPage需要數據來更改內容,那么什么也沒發生,它不會發生變化,它將停留在第一頁上

是的,每當我更改索引時,我都使用setState方法刷新布局。

這是錯誤還是我錯過了什么? 如果不是錯誤,該如何解決? 提前致謝

更新:

我發布了另一個頁面的代碼,該頁面更簡單,但在任何地方都存在此問題,這並不奇怪(我知道在此頁面中我可以使用statelessWidget,但無論如何它都應該可以工作):

class FirstFragment extends StatefulWidget {
  String data;
  FirstFragment(this.data);

  @override
  _FirstFragment createState() => new _FirstFragment(data);

}

class _FirstFragment extends State<FirstFragment>{
  String data;
  _FirstFragment(this.data);

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return new Center(
      child: new Text(data),
    );
  }
}

您不應該將參數從父窗口小部件類傳遞到其狀態-您可以通過“ widget”指令訪問它們。 另外,請聽Lint-所有實例在主類中都是最終的。

class FirstFragment extends StatefulWidget {
  final String data;
  FirstFragment(this.data);

  @override
  _FirstFragment createState() => new _FirstFragment();

}

class _FirstFragment extends State<FirstFragment>{


  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return new Center(
      child: new Text(widget.data),
    );
  }
}

暫無
暫無

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

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