【问题标题】:flutter child props is changing parent variable颤振子道具正在改变父变量
【发布时间】:2021-09-24 16:48:54
【问题描述】:

我将一个变量从父小部件发送给它的子小部件。通过参数。我在父子小部件上使用该变量。例如,我在父小部件上使用 variable.name。当我更改子小部件 widget.variable.name = 'all' 上的变量时,它也在更新父小部件,但我只想在子小部件上更改它。

【问题讨论】:

  • 请分享您的代码

标签: flutter dart


【解决方案1】:

您可以在子状态中创建一个临时变量。



class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  int parentVal = 1;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Column(
      children: [
        ElevatedButton(
          onPressed: () {
            setState(() {
              parentVal++;
            });
          },
          child: Text("parent val: $parentVal"),
        ),
        ChildW(
          childval: parentVal,
        )
      ],
    ));
  }
}

class ChildW extends StatefulWidget {
  final int childval;
  const ChildW({
    Key? key,
    required this.childval,
  }) : super(key: key);

  @override
  State<ChildW> createState() => _ChildWState();
}

class _ChildWState extends State<ChildW> {
  late int tempChildVal;

  @override
  void initState() {
    super.initState();
    tempChildVal = widget.childval;
  }

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: () {
        setState(() {
          tempChildVal++;
        });
      },
      child: Text("child val: $tempChildVal"),
    );
  }
}

【讨论】:

  • 我没有工作
  • 你可以包含你的小部件,这会重现同样的问题吗?
猜你喜欢
  • 2021-12-04
  • 2020-09-27
  • 2020-12-13
  • 2020-02-07
  • 2019-02-12
  • 2023-01-24
  • 2016-11-03
  • 2021-05-30
  • 1970-01-01
相关资源
最近更新 更多