Flutter - MultiProvider (ChangeNotifierProvider)不工作。

问题描述 投票:0回答:1

ChangeNotifierProvider不工作! 我不知道是什么问题。谁能告诉我这段代码有什么问题吗?

我想通过 检验 值到下一页。

这里是主要功能和提供者

void main() {
runApp(
MultiProvider(
providers:[
ChangeNotifierProvider<ProductsNotifier>(create:(context)=> ProductsNotifier()),
//  second provider...
],
child:MaterialApp( home: MyApp())
)  
);
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
//Provider
return Scaffold(
  appBar: AppBar(
    title: Text('Test'),
  ),
  body: Container(
    child:RaisedButton(
    onPressed: (){
    ProductsNotifier obj = new ProductsNotifier();
    obj.testFun();
      Navigator.push(context,
            MaterialPageRoute(builder: (context) => NextPage()),
        );
      },
      child: Text('GO TO THE NEXT PAGE'),
    )
   ),
  );
 }
}

下一页。

class NextPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
 var txt = Provider.of<ProductsNotifier>(context);

return Scaffold(
  appBar: AppBar(
    title: Text('Next Page'),
  ),
  body: Container(
    child: Text(txt.test.toString()),
  ),
);
}
}

产品类Notifier

class ProductsNotifier with ChangeNotifier{
String _test ;
String get test => _test;

 void testFun()  {
 _test = "DONE!";
  notifyListeners();
 }
}
flutter provider flutter-change-notifier
1个回答
0
投票

首先删除这一行。

ProductsNotifier obj = new ProductsNotifier();

它已经在这里创建。

ChangeNotifierProvider<ProductsNotifier>(create:(context)=> ProductsNotifier()),

然后

class ProductsNotifier with ChangeNotifier{

改为:

class ProductsNotifier extends ChangeNotifier{
© www.soinside.com 2019 - 2024. All rights reserved.