трепет провайдера - PullRequest
       23

трепет провайдера

0 голосов
/ 05 ноября 2019

привет, я управляю состоянием с провайдером, но у меня какая-то проблема

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, и я 'пытаюсь управлять кнопкой «Мне нравится» с помощью провайдера.

Но в отличие от того, что я думал, функция «Вкл. и выкл.» работает нормально, но все каналы имеют одного и того же провайдера.

Например, если вынажмите Как на одном канале, канал, который вы не нажимали, включен, даже если вы перешли на другой канал.

Код поставщика:


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(),
      ),
    );
  }
}

Как мы можем управлять отдельнымПодача

...