簡體   English   中英

Flutter StatefulWidget

[英]Flutter StatefulWidget

看看 StatefulWidget 的用法,我想知道這樣的循環依賴的設計決策:

class YellowBird extends StatefulWidget {
  const YellowBird({ Key key }) : super(key: key);

  @override
  _YellowBirdState createState() => _YellowBirdState();
}

class _YellowBirdState extends State<YellowBird> {
  @override
  Widget build(BuildContext context) {
    return Container(color: const Color(0xFFFFE306));
  }
}

示例取自Flutter StatefulWidget 文檔

有什么想法嗎?

這是構建有狀態小部件的(一種)正確方法,並且與 flutter 文檔完全一致。

這不是循環依賴 您正在定義一個 Stateful Widget 類和一個相應的 State 類。 Widget 包含一個 State 對象(或者更確切地說是它的一個子類),使用的是基於組合繼承的原則。

來自有狀態小部件文檔

StatefulWidget 實例本身是不可變的,並且將它們的可變狀態存儲在由 createState 方法創建的單獨 State 對象中,或者存儲在 State 訂閱的對象中,例如 Stream 或 ChangeNotifier 對象,這些對象的引用存儲在 StatefulWidget 的最終字段中本身。

這樣 Flutter 框架就可以更好的管理這個 Widget 的數據的操作和變化。 例如(來自上面的鏈接):

[...] 多個 State 對象可能與同一個 StatefulWidget 相關聯,如果該小部件已在多個位置插入到樹中。

這種組合stful於繼承的原則是 Flutter 框架的核心概念,大多數 IDE 可以自動為您創建此樣板代碼(例如,在 AndroidStudio 上輸入stful建議 StatefulWidgets 類及其與 State 相關的類),因此您不必擔心它。

暫無
暫無

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

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