Flutter 使用flatterprovider从子小部件更新父小部件

Flutter 使用flatterprovider从子小部件更新父小部件,flutter,dart,flutter-provider,Flutter,Dart,Flutter Provider,如何使用提供程序更新子小部件的父小部件的状态 目前我正在做的是将一个函数从父级传递给子级,该函数在父级端调用setState()函数(请参阅下面的psuedocode),但我正在寻找一种更健壮的方法来实现这一点 class ParentWidget extends StatefulWidget { @override _ParentWidgetState createState() => _ParentWidgetState(); } class _ParentWidgetSta

如何使用提供程序更新子小部件的父小部件的状态

目前我正在做的是将一个函数从父级传递给子级,该函数在父级端调用
setState()
函数(请参阅下面的psuedocode),但我正在寻找一种更健壮的方法来实现这一点

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

class _ParentWidgetState extends State<ParentWidget> {

  _refresh() {
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      child: new ChildWidget(
        notifyParent: _refresh(),
      ),
    );
  }
}

class ChildWidget extends StatelessWidget {
  final Function notifyParent;
  ChildWidget({@required this.notifyParent});

  @override
  Widget build(BuildContext context) {
    return Container(
      child: new FlatButton(
          onPressed: notifyParent(), child: new Text("Update Parent")),
    );
  }
}

类ParentWidget扩展StatefulWidget{
@凌驾
_ParentWidgetState createState()=>\u ParentWidgetState();
}
类_ParentWidgetState扩展状态{
_刷新(){
setState((){});
}
@凌驾
小部件构建(构建上下文){
返回容器(
child:newchildwidget(
notifyParent:\u refresh(),
),
);
}
}
类ChildWidget扩展了无状态widget{
最终功能通知父级;
ChildWidget({@required this.notifyParent});
@凌驾
小部件构建(构建上下文){
返回容器(
孩子:新的扁平按钮(
onPressed:notifyParent(),子项:新文本(“更新父项”),
);
}
}
这是我可以表示问题的最简单的方法,父窗口中的
setState()
(在实际代码中)强制父窗口小部件更新其视图

在实际代码中,我让子小部件处理db查询,单击子小部件更改db中的值,这些值将由父小部件更新。因此,当我单击子窗口小部件时,它会更新数据库,然后调用
notifyParent()
,这将导致父窗口再次查询数据库并更新视图

有没有更好的方法不用提供程序使用
setState()?如何使用say a
ChangeNotifierProvider
通知数据库更改?或者,当数据库中的某些内容发生更改时,是否有任何方法可以通知父窗口小部件,以便父窗口小部件可以刷新自身


谢谢。

为什么要通知家长更新?这种逻辑似乎是有缺陷的,因为父母无法访问孩子体内的东西谢谢你的回答。父窗口小部件需要显示数据库中的项目,并在子窗口小部件修改这些项目时进行更改,父窗口小部件的唯一目的是显示数据库中的项目。我确实觉得逻辑有缺陷,因此正在寻找更好的解决方案。@sujay\u br你找到答案了吗??如果是,那么请分享…我也被困在这里。