首页 > 解决方案 > 如何在 MyApp 的 build 方法中调用 Stateless 小部件,其状态由其 Stateful Parent 管理

问题描述

我在此链接 [https://flutter.dev/docs/development/ui/interactive#parent-managed][1] 上关注用于管理来自其父级的小部件状态的颤振教程,但我无法弄清楚如何调用在这种情况下小部件

标签: flutter

解决方案


一旦你掌握了逻辑,这非常简单。

在实践中,父级(您调用的“真实”小部件),即

class ParentWidget extends StatefulWidget {
  @override
  _ParentWidgetState createState() => _ParentWidgetState();
}

是您在其余代码中随时随地调用的那个。

由于这是一个有状态的小部件,这意味着它已声明(为简单起见,它将管理 UI 上的任何更改)。任何改变都会发生,它会改变它的状态,所以,这段代码:

class _ParentWidgetState extends State<ParentWidget> {
  bool _active = false;

  void _handleTapboxChanged(bool newValue) {
    setState(() {
      _active = newValue;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      child: TapboxB(
        active: _active,
        onChanged: _handleTapboxChanged,
      ),
    );
  }
}

无论如何,一旦你使用了一个有状态的小部件,你就可以在你想调用这个函数时改变它的状态

setState(() {
      oldValue= newValue;
    });

它将重建整个小部件以更改您想要的内容(例如文本、图像、小部件等)。以一种不恰当的方式,将其视为可以在此期间更改其 UI 的特定小部件。


推荐阅读