Flutter 如何从类B调用类A的setState()

Flutter 如何从类B调用类A的setState(),flutter,dart,Flutter,Dart,当我点击IconButton()删除列表中的所有项目movies时,在重新打开页面之前,我看不到该更改 有人知道我该怎么修理吗 这是我的个人信息((“B类”): class InfoPage扩展StatefulWidget{ int-id; int pageId; InfoPage(this.id,this.pageId); @凌驾 _InfoPageState createState()=>\u InfoPageState(id,pageId); } 类_InfoPageState扩展了状态{

当我点击
IconButton()
删除列表中的所有项目
movies
时,在重新打开页面之前,我看不到该更改

有人知道我该怎么修理吗

这是我的个人信息((“B类”):

class InfoPage扩展StatefulWidget{
int-id;
int pageId;
InfoPage(this.id,this.pageId);
@凌驾
_InfoPageState createState()=>\u InfoPageState(id,pageId);
}
类_InfoPageState扩展了状态{
var db=DatabaseHelper();
字符串标题=”;
字符串about=“”;
字符串速率=”;
字符串日期=”;
int-id;
int pageId;
_InfoPageState(this.id,this.pageId);
@凌驾
void initState(){
super.initState();
如果(pageId==1){
_getMovie();
}
}
void\u getMovie()异步{
Movie thismoine=wait db.getMovie(id);
设置状态(){
title=thismoine.name;
关于=此电影。描述;
rate=thismoine.rate;
日期=thismoine.date;
});
}
_deleteMovie()异步{
等待db.deleteMovie(id);
Navigator.pop(上下文);
设置状态(){
CardsListViewState(pageId).deleteAllList();
});
}
@凌驾
小部件构建(构建上下文){
canPop(上下文);
返回脚手架(
主体:容器(
子:列(
儿童:[
容器(
页边距:仅限边集(底部:10),
孩子:排(
crossAxisAlignment:crossAxisAlignment.center,
儿童:[
扩大(
子级:容器(),
),
容器(
页边距:仅限边集(右:10),
孩子:我的钮扣(
图标:图标(图标.删除,颜色:颜色(0xffFC4D4D)),
已按下:(){
_删除电影();
}
)
)
],
),
)
],
),
),
);
}
}
这是我的CardsListView((“A类”))

class CardsListView扩展StatefulWidget{
从何而来;
CardsListView(本文件来源);
@凌驾
CardsListViewState createState()=>CardsListViewState(来自何处);
}
类CardsListViewState扩展了状态{
从何而来;
CardsListViewState(本文件来源);
var db=DatabaseHelper();
列表mainList=[];
最终电影列表=[];
deleteAllList()异步{
等待db.deleteMovies();
设置状态(){
电影;
});
}
@凌驾
void initState(){
super.initState();
_readUnites();
if(whereComeFrom==1){
mainList=电影;
}
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:
GridView.count(
交叉轴计数:3,
AddAutomaticEpaLifes:没错,
儿童方面:(1/1.5),
子项:List.generate(mainList.length,(索引){
返回CardUnite(mainList[index].name,mainList[index].id,whereComeFrom);
})
),
);
}

您可以使用提供给子类的父类的回调函数。
记住,函数在Dart中。

只需将一个调用SETSATE的函数传递给该子并调用该函数。

上面提供的代码是不完整的,这会使您感到困惑。您能提供完整的可运行性吗?还是考虑提供者类,它是相当轻量级的,甚至是由谷歌推荐的。
class InfoPage extends StatefulWidget {
  int id;
  int pageId;
  InfoPage(this.id,this.pageId);
  @override
  _InfoPageState createState() => _InfoPageState(id,pageId);
}

class _InfoPageState extends State<InfoPage> {
  var db = DatabaseHelper();
  String title = "";
  String about = "";
  String rate = "";
  String date = "";
  int id;
  int pageId;
  _InfoPageState(this.id,this.pageId);

  @override
  void initState() {
    super.initState();
    if(pageId == 1){
      _getMovie();
    }
  }
  void _getMovie() async {
    Movie thisMovie = await db.getMovie(id);
    setState(() {
      title = thisMovie.name;
      about = thisMovie.description;
      rate = thisMovie.rate;
      date = thisMovie.date;
    });
  }
  _deleteMovie() async{
    await db.deleteMovie(id);
    Navigator.pop(context);
    setState(() {
      CardsListViewState(pageId).deleteAllList();
    });
  }
  @override
  Widget build(BuildContext context) {
    Navigator.canPop(context);
    return Scaffold(
      body: Container(
        child: Column(
          children: <Widget>[
            Container(
              margin: EdgeInsets.only(bottom: 10),
              child:Row(
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[
                  Expanded(
                    child: Container(),
                  ),
                  Container(
                      margin: EdgeInsets.only(right: 10),
                      child: IconButton(
                          icon: Icon(Icons.delete,color: Color(0xffFC4D4D),),
                          onPressed: (){
                            _deleteMovie();
                          }
                      )
                  )
                ],
              ),
            )
          ],
        ),
      ),
    );
  }
}
class CardsListView extends StatefulWidget {
  int whereComeFrom;
  CardsListView(this.whereComeFrom);
  @override
  CardsListViewState createState() => CardsListViewState(whereComeFrom);
}

class CardsListViewState extends State<CardsListView> {
  int whereComeFrom;
  CardsListViewState(this.whereComeFrom);
  var db = DatabaseHelper();
  List mainList = [];
  final List<Movie> movies = <Movie>[];
  deleteAllList() async{
    await db.deleteMovies();
    setState(() {
      movies.clear();
    });
  }
         @override
   void initState() {
    super.initState();
    _readUnites();
    if(whereComeFrom == 1){
      mainList = movies;
    }
  }
@override
  Widget build(BuildContext context) {
    return Scaffold(
        body:
        GridView.count(
            crossAxisCount: 3,
            addAutomaticKeepAlives: true,
            childAspectRatio: (1/1.5),
            children: List.generate(mainList.length, (index){
              return CardUnite(mainList[index].name,mainList[index].id,whereComeFrom);
            })
        ),
    );
  }