带有Feed的Flutter提供程序Listview

时间:2019-11-05 09:52:47

标签: flutter dart state provider

您与提供商之间的管理状态, 但是我有问题

InkWell(
                                  onTap: () {
                                    if (contextLikeState.LikeState2 == false) {
                                      LikeControll(contextLikeState.LikeState2);
                                      contextLikeState.on2();
                                    } else {
                                      LikeControll(contextLikeState.LikeState2);
                                      contextLikeState.off2();
                                    }
                                  },
                                  child: (contextLikeState.LikeState2 == false)
                                      ? Icon(
                                          Icons.favorite_border,
                                          color: Colors.black54,
                                          size: 20,
                                        )
                                      : Icon(
                                          Icons.favorite,
                                          color: Colors.red,
                                          size: 20,
                                        ),
                                ),

上面的代码,就像打开和关闭按钮一样

我正在使用ListView创建Feed,并且尝试使用提供程序来管理“赞”按钮。

但是与我所想的不同,Like On和Off的功能正常工作,但是所有提要都具有相同的提供程序。

例如,如果您在一个供稿上按“赞”,则即使您移至另一个供稿,也未按该供稿。

提供者代码:


class ContextLikeState extends ChangeNotifier{
  bool _LikeState = false;
  bool get LikeState2 => _LikeState;

  set LikeState2(bool val){
    _LikeState = val;
    notifyListeners();
  }
  on2(){
    _LikeState = true;
    notifyListeners();
  }

  off2(){
    _LikeState = false;
    notifyListeners();
  }
}

class MyApp extends StatelessWidget{

  static const String _title = 'flutter code';
  @override
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        ChangeNotifierProvider<BlocProvider>.value(value: BlocProvider()),
        ChangeNotifierProvider<ProfileLikeState>.value(value: ProfileLikeState()),
        ChangeNotifierProvider<ContextLikeState>.value(value:ContextLikeState()),
      ],
      child: MaterialApp(
        debugShowCheckedModeBanner: false,
        title: _title,
        home: LoginScreen(),
      ),
    );
  }
}

我们如何管理单个Feed?

0 个答案:

没有答案