Provider not updating value possible string to double issue


I am new to flutter and attempting to write my first app on my own outside of a course. I am working with using the Flutter Provider package, and I am successfully able to read values using Provide, but I am having issues writing over values to update them with Provider.

Code Walk Through

In my main.dar I am calling the create command on my class Week()

return MultiProvider(
      providers: [
        ChangeNotifierProvider(create: (context) => WeekList()),
        ChangeNotifierProvider(create: (context) => Week()),

I think my issue might be going back and forth between String and double types.

In an alert Diolog I am calling,

String curentbudget = Provider.of<Week>(context).budget.toString();

That part works perfect and I then can assign the value to the TextEditingController

TextEditingController currentBudgetController = TextEditingController(text: curentbudget);

After editing the value in the alert dialog, I then try to save the value with my update function:

onPressed: () {
      //save new value
      double budgetDouble =double.parse(currentBudgetController.text);
      Provider.of<Week>(context, listen: false).updateBudget(newBudget: budgetDouble);
      //close Dialog

Again, not sure if it’s not saving because it’s a double / string issue.

My Week Class update function looks like this:

  void updateBudget({
    required double newBudget,
  }) {
    Week().budget = newBudget;

And the location I am trying to update the budget is:

child: Text(
        style: const TextStyle(fontSize: 25.0),


I stepped through with the debugger and when I update the value to let’s say 300.0 I successfully get that value through the update function:

Week().budget = newBudget;

the next line is the notifyListeners(); and it looks like thats not updating the value in my view for some reason.


You can call your method like this,

double budget = 0.0;

  void updateBudget({required double newBudget}) {
    budget = newBudget;

For getting the value you can use Consumer widget.

child: Consumer<Week>(builder: (context, weekData, child) {
   return Text(

Answered By – Dev Hingu

Answer Checked By – Senaida (FlutterFixes Volunteer)

Leave a Reply

Your email address will not be published. Required fields are marked *