如何將數據傳遞給有狀態的小部件 (How to pass data to stateful widget)


問題描述

如何將數據傳遞給有狀態的小部件 (How to pass data to stateful widget)

當我嘗試將數據傳遞給有狀態小部件時,我收到此錯誤:

[State] 對象的配置是對應的 [StatefulWidget] 實例。該屬性在調用 [initState] 之前由框架初始化。在初始化程序中只能訪問靜態成員。

基本上我正在嘗試將數據從 detail.dart 傳遞到 about.dart

detail.dart :

class PokemonDetail extends StatefulWidget {
PokemonDetail({this.pokemon});

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

class _PokemonDetailState extends State<PokemonDetail> with SingleTickerProviderStateMixin{
final List<TabData> _tabs = [
TabData("About", PokemonAbout(pokemon: widget.pokemon)),
....];


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


Widget _buildTabContent() {
return Expanded(
  child: TabBarView(
    children: _tabs.map((tab) => tab.child).toList(),
  ),
);
}

about.dart :

class PokemonAbout extends StatefulWidget {
final Pokemon pokemon;

const PokemonAbout({this.pokemon, key}) : super(key: key);

參考解法

方法 1:

This line _PokemonAboutState createState() => _PokemonAboutState(); should not be called inside the State class. It is already defined in the StatefulWidget class. Try removing it and see what happens.

方法 2:

'widget.pokemon' cannot be used in class‑level field initialization. Try moving tabs declaration inside the initState:

class _PokemonDetailState extends State<PokemonDetail> with SingleTickerProviderStateMixin{
List<TabData> _tabs = [];

@override
void initState(){
   super.initState();
   _tabs = [ TabData("About", PokemonAbout(pokemon: widget.pokemon)), ....];
}

I hope this helps!

(by MeguminKarim Elghamrydigitaljoni)

參考文件

  1. How to pass data to stateful widget (CC BY‑SA 2.5/3.0/4.0)

#dart #Flutter






相關問題

如何將數據傳遞給有狀態的小部件 (How to pass data to stateful widget)

顫振無線電值在步進器中沒有改變 (Flutter Radio Value not Changing in Stepper)

如何在顫動中製作響應式播放按鈕? (How to make a responsive play button in flutter?)

如何將數據數組轉換為在顫振/飛鏢中展開或折疊的小部件列表? (How to convert an array of data to a list of widgets with expand or fold in flutter/dart?)

Flutter - 迭代異步/未來列表 (Flutter - iterate over an asynchrous/future list)

使用顫振將圖像作為blob存儲在mysql數據庫中 (Storing image's as blob in mysql database with flutter)

如何在顫動中將視頻播放器浮動在 youtube 等所有頁面上? (How to float a video player over all pages like youtube in flutter?)

無法設置回調函數。錯誤說:“DropDown”必須有一個方法體,因為“ListLayout”不是抽象的 (Unable to set callback function . Error Says: 'DropDown' must have a method body because 'ListLayout' isn't abstract)

Flutter:如何在沒有評級動作的情況下實現評級欄 (Flutter : How to implement rating bar without rating action)

設置狀態內存洩漏 (set state memory leak)

Flutter 視頻播放器不接受自簽名 https 連接 (Flutter video player wont accept self signed https connection)

為什麼有時上下文被替換為下劃線或“_”? (Why sometimes context is being replace as underscore or "_"?)







留言討論