flutter - Flutter:外部小部件的setState

标签 flutter dart setstate

在默认的新flutter项目中,有floatActionButton。
我希望它在外部文件/小部件中,但在setState()时遇到问题
这可能吗?谢谢

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}

最佳答案

您可以将_incrementCounter方法向下传递给其他窗口小部件。
文件1:

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: IncrementCounterButton(
        incrementCounter: _incrementCounter,
      ),
    );
  }
}
文件2:
class IncrementCounterButton extends StatelessWidget {
  final void Function() incrementCounter;

  IncrementCounterButton({Key key, this.incrementCounter) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return  FloatingActionButton(
      onPressed: incrementCounter,
      tooltip: 'Increment',
      child: Icon(Icons.add),
    );
  }
}

关于flutter - Flutter:外部小部件的setState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62998357/

相关文章:

visual-studio-code - 如何为 Flutter 模拟器的 Visual Studio Code 设置设备

button - Flutter - 按下时更改 RaisedButton 的颜色

javascript - setState 不更新状态

flutter - 如何在带有Firebase的Flutter中使用电话号码进行身份验证?

flutter - AssetImage 和 ExactAssetImage 有什么区别?

dart - 如何在 Angular 2 中获取组件本身和定义变量的引用

flutter - 如何从Dart Flutter中的异步函数返回数据?

javascript - React 的函数式 setState 如何判断哪些字段已更新?

ios - Flutter iOS 热重启崩溃 [__NSCFString setStreamHandler :]: unrecognized selector

dart - 如何用两个按钮填充行?