【问题标题】:What is this widget property from the StatefulWidget flutterStatefulWidget 颤动的这个小部件属性是什么
【发布时间】:2019-11-02 20:58:53
【问题描述】:

这是一个非常简单的问题,我有时会看到类似:widget.titlewidget.(anything) 在颤动;像 AppBar Widget 的 Text 子部件中的这个例子:

class MyApp extends StatefulWidget{
    // some declarations here
    @override
    _MyApp createState() => _MyApp();
}

class _MyApp extends State<MyApp>{
   // some declaration here
    @override
    Widget build(BuildContext context){

        return MaterialApp(
            home: Scaffold(
               appBar: AppBar(child: Text(widget.title),),
            ),
        );
    }
}

这实际上是什么?

widget.title 我的意思是,widget 引用是什么?这是什么?

【问题讨论】:

    标签: android inheritance flutter frameworks


    【解决方案1】:

    长答案短

    您已扩展 State
    参考docs

    State 类有一个名为 widgetreadonly 属性。你指的是哪个。

    【讨论】:

      【解决方案2】:

      MyApp 类扩展了 StatefulWidget,这意味着这个小部件存储可变状态。当 MyApp 小部件第一次插入树中时,框架调用 createState() 函数来创建 _MyAppState 的新实例以与树中的该位置相关联。 (请注意,State 的子类通常以前导下划线命名,表示它们是私有实现细节。)当这个小部件的父级重建时,父级会创建一个新的 MyApp 实例,但框架会重用 _MyAppState 实例,即已经在树中,而不是再次调用 createState。

      要访问当前MyApp 的属性,_MyAppState 可以使用其widget property。如果父级重建并创建一个新的MyApp_MyAppState 将使用新的小部件值重建。如果您希望在小部件属性更改时收到通知,请覆盖 didUpdateWidget() 函数,该函数作为 oldWidget 传递,以便您将旧小部件与当前小部件进行比较。

      现在根据文档:小部件属性

      该属性在调用前由框架初始化 初始化状态。如果父级将树中的这个位置更新为新的 与当前具有相同 runtimeType 和 Widget.key 的小部件 配置,框架将更新此属性以引用 新的小部件,然后调用 didUpdateWidget,传递旧的 配置作为参数。

      reference link

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-10
        • 2021-06-08
        • 1970-01-01
        • 2019-06-12
        • 1970-01-01
        • 2019-08-29
        • 1970-01-01
        • 2015-01-18
        相关资源
        最近更新 更多