Flutter 如何正确使用ChangeNotifierProvider.value将状态从屏幕1传递到屏幕2

Flutter 如何正确使用ChangeNotifierProvider.value将状态从屏幕1传递到屏幕2,flutter,state,provider,Flutter,State,Provider,我有两个屏幕主页和详细页面。我想基于某个动作在detailpage中重建小部件,但问题是数据通过http请求来自homepage,并且一个特定的对象被传递到第二个屏幕,以便在其上显示详细信息 class ListPage extends StatefulWidget { @override _ListPageState createState() => _ListPageState(); } class _ListPageS

我有两个屏幕主页和详细页面。我想基于某个动作在detailpage中重建小部件,但问题是数据通过http请求来自homepage,并且一个特定的对象被传递到第二个屏幕,以便在其上显示详细信息

     class ListPage extends StatefulWidget {
       @override
       _ListPageState createState() => _ListPageState();
        }

     class _ListPageState extends State<ListPage> {
            ParcelModel model = ParcelModel();
          
          @override
          void initState() {
             model.loadData();
             super.initState();
           }

        Widget build(BuildContext context) {
            width = MediaQuery.of(context).size.width;
            return MultiProvider(
                 providers: [
                        ChangeNotifierProvider(create: (_) => ParcelModel()),
                   ],
           child: DefaultTabController(
                 length: 3,
          child: ChangeNotifierProvider(
              create: (context) => model,
             child: Consumer<ParcelModel>(
             builder:(context, model, child){
            if(model.failed == true){
              return Scaffold(
                backgroundColor: Colors.white,
                body:TabBarView(children:[
                  mescolis(context.watch<ParcelModel().listParcel),futureWidget_quotation(),
                  Payezcolisencoursdelivraison(context.watch<ParcelModel>().listParcel),
                ]),
                floatingActionButton:FloatingActionButton(
                      onPressed: (){
                           MaterialPageRoute(
                                builder:(context) => ChangeNotifierProvider.value(
                                    value:model,
         child:Formtest(dataPays:context.watch<ParcelModel().listParcel,newsecontext:context,) //trying to pass the model here
                                )
                            );
                         }
                         )
                  ),
                ),
              );
class ListPage扩展了StatefulWidget{
@凌驾
_ListPageState createState()=>\u ListPageState();
}
类_ListPageState扩展状态{
ParcelModel模型=ParcelModel();
@凌驾
void initState(){
model.loadData();
super.initState();
}
小部件构建(构建上下文){
宽度=MediaQuery.of(context).size.width;
回程多供应商(
供应商:[
ChangeNotifierProvider(创建:(\u)=>ParcelModel()),
],
子级:DefaultTabController(
长度:3,
子项:ChangeNotifierProvider(
创建:(上下文)=>模型,
儿童:消费者(
生成器:(上下文、模型、子对象){
如果(model.failed==true){
返回脚手架(
背景颜色:Colors.white,
正文:选项卡视图(子项:[
mescolis(context.watch ChangeNotifierProvider.value(
价值:模型,
child:Formtest(dataPays:context.watch)
         new RaisedButton(  
          onPressed: (){
             try{
            Provider.of<ParcelModel>(newContext,listen: false).postData(
                formData,
                dio,
                context,
                nom_coli_Controller,
                description_coli_Controller,
                nature_Controller,
                nom_coli_Controller
            );
          }catch(e){
            FlutterFlexibleToast.showToast(
              message: "error",
              toastLength: Toast.LENGTH_LONG,
              timeInSeconds:30,
              radius: 70,
            );
          }
               },  
          child: new Text("Press here"),),