【问题标题】:How to pass data to stateful widget如何将数据传递给有状态的小部件
【发布时间】:2019-12-29 22:05:26
【问题描述】:

当我尝试将数据传递给有状态小部件时,我收到此错误:

[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(),
  ),
);
}

关于.dart:

class PokemonAbout extends StatefulWidget {
final Pokemon pokemon;

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

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    'widget.pokemon' 不能用于类级字段初始化。尝试在 initState 中移动标签声明:

    class _PokemonDetailState extends State<PokemonDetail> with SingleTickerProviderStateMixin{
    List<TabData> _tabs = [];
    
    @override
    void initState(){
       super.initState();
       _tabs = [ TabData("About", PokemonAbout(pokemon: widget.pokemon)), ....];
    }
    

    我希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      这行_PokemonAboutState createState() =&gt; _PokemonAboutState(); 不应在State 类中调用。它已经在StatefulWidget 类中定义。尝试删除它,看看会发生什么。

      【讨论】:

      • 抱歉打错字了,那行在 about.dart 中。
      猜你喜欢
      • 1970-01-01
      • 2022-07-29
      • 2019-08-29
      • 1970-01-01
      • 2021-08-29
      • 1970-01-01
      • 2021-07-23
      • 2020-12-01
      相关资源
      最近更新 更多