Hello.
I am use Provider 4.0.1 and faced with problem.
Provider.of provide previous value in didChangeDependencies
And same call of Provider.of in build method ( for debug purpose ) show right new value.
In Provider 3.2.0 all is okay.
I provide my value in root of app using Provider.value wrapped in MultiProvider.
Code look like this:

Hello!
I don't understand what you meant.
Do you mind sharing a small snippet to reproduce the issue and explain what's expected?
I created sample to reproduce. Hope it'll help. Provider version: 4.0.1.
Try to switch Switch widget and see on values. I expect equals values, but they are different.
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() => runApp(MyApp());
StreamController<bool> isDarkThemeStreamController = StreamController();
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StreamBuilder<bool>(
stream: isDarkThemeStreamController.stream,
initialData: true,
builder: (context, snapshot) {
return Provider.value(
value: snapshot.data,
child: MaterialApp(
title: 'Provider bug example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
),
);
});
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
bool isDarkThemeFromDidChangeDependencies;
@override
void didChangeDependencies() {
isDarkThemeFromDidChangeDependencies = Provider.of<bool>(context);
super.didChangeDependencies();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Provider bug example"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
Text("Switch for dark theme:"),
Switch(
value: Provider.of<bool>(context),
onChanged: isDarkThemeStreamController.sink.add,
),
Text(
"isDarkTheme from didChangeDependencies: $isDarkThemeFromDidChangeDependencies"),
Text("isDarkTheme from build: ${Provider.of<bool>(context)}"),
],
),
),
);
}
}
Thanks, I will check that out
Ok I've managed to reproduce the issue.
Ironically I've also fixed it by accident when working on the 4.1.0
So I've got the fix down. I'll extract it from the WIP 4.1.0, and publish a 4.0.2
Thanks. I'll wait for 4.0.2:)