Provider does not read it

49 Views Asked by At

I want to use the _count variable in another widget. I can't access _count variable with provider

class Hamburger extends StatefulWidget {
  const Hamburger({super.key});

  @override
  State<Hamburger> createState() => _HamburgerState();
}

class _HamburgerState extends State<Hamburger> {
  int _count = 1;
1

There are 1 best solutions below

1
Bruno Eigenmann On

The issue is that you are trying to access _count in a separate class without providing context to the Provider. To access the value of _count using Provider, you need to wrap the _HamburgerState widget in a ChangeNotifierProvider and expose _count as a listenable property.

This is an example:

import 'package:flutter/widgets.dart';
import 'package:provider/provider.dart';

class Hamburger extends StatefulWidget {
  const Hamburger({Key key}) : super(key: key);

  @override
  State<Hamburger> createState() => _HamburgerState();
}

class _HamburgerState extends State<Hamburger> {
  int _count = 1;

  void incrementCount() {
    setState(() {
      _count++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider.value(
      value: this,
      child: Container(),
    );
  }
}

class CountNotifier extends ChangeNotifier {
  int _count;

  int get count => _count;

  set count(int value) {
    _count = value;
    notifyListeners();
  }
}