i am trying to have both dark and light mode (before my app was just dark).
i used hooks_riverpod: ^2.5.1 to switch between these modes.
when i debug, i found that it throw StateError (Bad state: No ProviderScope found) because the scope is null (in static ProviderContainer containerOf inside freamework.dart file).
my main file:
import ‘dart:math’;
import ‘package:flutter/material.dart’;
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:video_app/app_theme.dart';
import 'package:video_app/theme_provider.dart';
import 'JoinScreen.dart';
import 'signallingService.dart';
void main() {
// start videoCall app
runApp(VideoCallApp());
}
class VideoCallApp extends HookConsumerWidget {
VideoCallApp({super.key});
// signalling server url
final String websocketUrl2 = "http://10.0.2.2:8000"; //for emulator
final String websocketUrl = "http://localhost:8000";
final String websocketUrl3 = "http://192.5.10.8:8000";
final String selfCallerID =
Random().nextInt(999999).toString().padLeft(6, '0');
@override
Widget build(BuildContext context, WidgetRef ref) {
final appThemeState = ref.watch(appThemeStateNotifier);
SignallingService.instance.init(
websocketUrl: websocketUrl,
websocketUrl2: websocketUrl2,
websocketUrl3: websocketUrl3,
selfCallerID: selfCallerID,
);
return MaterialApp(
darkTheme: AppTheme.darkTheme,
theme: AppTheme.lightTheme,
themeMode:
appThemeState.isDarkModeEnable ? ThemeMode.dark : ThemeMode.light,
home: JoinScreen(selfCallerId: selfCallerID),
);
}
}
and my appThemeState file:
import ‘package:hooks_riverpod/hooks_riverpod.dart’;
import ‘package:flutter/material.dart’;
final appThemeStateNotifier = ChangeNotifierProvider((ref) => AppThemeState());
class AppThemeState extends ChangeNotifier {
var isDarkModeEnable = true;
void setLightTheme() {
isDarkModeEnable = true;
notifyListeners();
}
void setDarkTheme() {
isDarkModeEnable = false;
notifyListeners();
}
}
Naif Alluhaidan Engr is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.