Skip to content

Commit 35bdf17

Browse files
committed
Move theme management to settings
1 parent 2974837 commit 35bdf17

File tree

6 files changed

+28
-40
lines changed

6 files changed

+28
-40
lines changed

example/lib/main.dart

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import 'package:instabug_flutter/instabug_flutter.dart';
77
import '../providers/bug_reporting_state.dart';
88
import '../providers/core_state.dart';
99
import '../providers/settings_state.dart';
10-
import '../providers/theme_state.dart';
1110
import '../screens/main_screen.dart';
1211

1312
void main() async {
@@ -44,11 +43,8 @@ class MyApp extends StatelessWidget {
4443
ChangeNotifierProvider(
4544
create: (_) => SettingsState(),
4645
),
47-
ChangeNotifierProvider(
48-
create: (_) => ThemeState(),
49-
),
5046
],
51-
child: Consumer<ThemeState>(
47+
child: Consumer<SettingsState>(
5248
builder: (context, themeState, child) {
5349
return MaterialApp(
5450
title: 'Instabug Flutter Example',

example/lib/providers/settings_state.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,20 @@
11
import 'package:flutter/material.dart';
22

3+
import '../models/app_theme.dart';
4+
35
class SettingsState extends ChangeNotifier {
6+
bool _isDarkTheme = false;
7+
ThemeData _themeData = AppTheme.lightTheme;
8+
9+
bool get isDarkTheme => _isDarkTheme;
10+
11+
ThemeData getThemeData() => _themeData;
12+
void setThemeData(bool isDarkMode) {
13+
_isDarkTheme = !_isDarkTheme;
14+
_themeData = isDarkMode ? AppTheme.darkTheme : AppTheme.lightTheme;
15+
notifyListeners();
16+
}
17+
418
final Map<String, Color> _colors = {
519
'Default': const Color(0xFF1D82DC),
620
'Red': Colors.red,

example/lib/providers/theme_state.dart

Lines changed: 0 additions & 17 deletions
This file was deleted.

example/lib/screens/settings_screen.dart

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import 'package:provider/provider.dart';
44
import 'package:instabug_flutter/instabug_flutter.dart';
55

66
import '../providers/settings_state.dart';
7-
import '../providers/theme_state.dart';
87
import '../widgets/feature_tile.dart';
98
import '../widgets/section_card.dart';
109
import '../widgets/separated_list_view.dart';
@@ -14,8 +13,7 @@ class SettingsScreen extends StatelessWidget {
1413

1514
@override
1615
Widget build(BuildContext context) {
17-
final themeState = Provider.of<ThemeState>(context);
18-
final settingsState = Provider.of<SettingsState>(context);
16+
final state = Provider.of<SettingsState>(context);
1917
return Scaffold(
2018
body: MediaQuery.removePadding(
2119
context: context,
@@ -31,19 +29,17 @@ class SettingsScreen extends StatelessWidget {
3129
children: [
3230
FeatureTile(
3331
leading: Icon(
34-
themeState.isDarkTheme
32+
state.isDarkTheme
3533
? Icons.dark_mode
3634
: Icons.dark_mode_outlined,
3735
),
3836
title: const Text('Dark Theme'),
3937
trailing: Switch(
40-
value: themeState.isDarkTheme,
38+
value: state.isDarkTheme,
4139
onChanged: (value) {
42-
themeState.setThemeData(value);
40+
state.setThemeData(value);
4341
Instabug.setColorTheme(
44-
themeState.isDarkTheme
45-
? ColorTheme.dark
46-
: ColorTheme.light,
42+
state.isDarkTheme ? ColorTheme.dark : ColorTheme.light,
4743
);
4844
},
4945
),
@@ -53,10 +49,9 @@ class SettingsScreen extends StatelessWidget {
5349
title: const Text('Primary Color'),
5450
bottom: Wrap(
5551
spacing: 4.0,
56-
children: settingsState.colors.keys.map((colorName) {
57-
final color = settingsState.colors[colorName]!;
58-
final isSelected =
59-
colorName == settingsState.selectedColorName;
52+
children: state.colors.keys.map((colorName) {
53+
final color = state.colors[colorName]!;
54+
final isSelected = colorName == state.selectedColorName;
6055
return ChoiceChip(
6156
label: Text(colorName),
6257
labelStyle: TextStyle(
@@ -66,7 +61,7 @@ class SettingsScreen extends StatelessWidget {
6661
selectedColor: color,
6762
onSelected: (selected) {
6863
if (selected) {
69-
settingsState.selectColor(colorName);
64+
state.selectColor(colorName);
7065
Instabug.setPrimaryColor(color);
7166
}
7267
},

example/lib/widgets/product_card.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
22
import 'package:provider/provider.dart';
33

44
import '../models/product_item.dart';
5-
import '../providers/theme_state.dart';
5+
import '../providers/settings_state.dart';
66
import '../screens/products_screen.dart';
77

88
class ProductCard extends StatelessWidget {
@@ -29,7 +29,7 @@ class ProductCard extends StatelessWidget {
2929

3030
@override
3131
Widget build(BuildContext context) {
32-
final state = Provider.of<ThemeState>(context);
32+
final state = Provider.of<SettingsState>(context);
3333
return InkWell(
3434
onTap: () => navToSelectedProduct(context),
3535
splashColor: state.getThemeData().splashColor,

example/lib/widgets/section_card.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'package:flutter/material.dart';
22
import 'package:provider/provider.dart';
33

4-
import '../providers/theme_state.dart';
4+
import '../providers/settings_state.dart';
55
import '../widgets/separated_list_view.dart';
66

77
class SectionCard extends StatelessWidget {
@@ -14,7 +14,7 @@ class SectionCard extends StatelessWidget {
1414

1515
@override
1616
Widget build(BuildContext context) {
17-
final state = Provider.of<ThemeState>(context);
17+
final state = Provider.of<SettingsState>(context);
1818
return Container(
1919
decoration: BoxDecoration(
2020
borderRadius: BorderRadius.circular(15),

0 commit comments

Comments
 (0)