小智 5

您可以将MultiProviderChangeNotifierProxyProvider一起使用

  1. 动作类(FirstModel)

     class FirstModel with ChangeNotifier {
     List<Strings> _names = ["Sat", "Sat2", "Sat3"];
    
     List<Strings> get names {
        return _names ;
     }
     }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 动作类(SecondModel)

     class SecondModel with ChangeNotifier {        
     SecondModel(this.firstModel);
    
     final FirstModel firstModel;
     List<Strings> getNames(){
        return firstModel.names;
     }
     }
    
    Run Code Online (Sandbox Code Playgroud)

main.dart中只需更新Multiprovider,示例如下

void main() {
  runApp(
    MultiProvider(
      providers: [
        ChangeNotifierProvider<FirstModel>(create: (_) => FirstModel()),
        ChangeNotifierProxyProvider0<SecondModel>(
          create: (BuildContext context) =>
              SecondModel(Provider.of<FirstModel>(context, listen: false)),
          update: (BuildContext context, SecondModel secondModel) =>
              SecondModel(Provider.of<FirstModel>(context, listen: false)),
        ),
      ],
      child: MyApp(),
    ),
  );
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: MyHomePage(),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

类似的其他课程也可用...有关更多信息,请参阅下面的链接...

ChangeNotifierProxyProvider0 类 API