Update new statistic view with theme change listener and new statistic categories

- Add listener for theme change in NewStatisticState
- Move statistic categories to NewStatisticState and update StatMenuItemType to use Assets.dart
- Update NewStatisticCategories to use statCat from NewStatisticState
- Add refresh method in NewStatisticState to update statCat list
- Call refresh method in initState of _NewStatisticState to update statCat list on theme change
This commit is contained in:
MohammadTaha Basiri 2024-04-01 19:20:16 +03:30
parent 39ef54e52d
commit 6740479395
3 changed files with 35 additions and 13 deletions

View File

@ -1,7 +1,7 @@
import 'package:didvan/config/theme_data.dart';
import 'package:didvan/constants/app_icons.dart';
import 'package:didvan/models/new_statistic/new_statistics_model.dart';
import 'package:didvan/providers/theme.dart';
import 'package:didvan/routes/routes.dart';
import 'package:didvan/views/home/new_statistic/new_statistics_state.dart';
import 'package:didvan/views/home/new_statistic/widgets/statistic_cat.dart';
@ -25,6 +25,7 @@ class _NewStatisticState extends State<NewStatistic> {
void initState() {
final state = context.read<NewStatisticState>();
state.init();
context.read<ThemeProvider>().addListener(state.refresh);
super.initState();
}

View File

@ -1,14 +1,18 @@
import 'dart:developer';
import 'package:didvan/constants/assets.dart';
import 'package:didvan/models/enums.dart';
import 'package:didvan/models/new_statistic/new_statistics_model.dart';
import 'package:didvan/providers/core.dart';
import 'package:didvan/services/network/request.dart';
import 'package:didvan/services/network/request_helper.dart';
import 'package:didvan/views/home/new_statistic/widgets/statistic_cat.dart';
class NewStatisticState extends CoreProvier {
final List<CategoryList> contents = [];
List<StatMenuItemType> statCat = [];
Future<void> getStatistic() async {
appState = AppState.busy;
final RequestService service = RequestService(
@ -29,11 +33,39 @@ class NewStatisticState extends CoreProvier {
}
void init() {
statCat = [
StatMenuItemType(
label: "بازار ارز و طلا", asset: Assets.currencyGoldStatCat, id: 1),
StatMenuItemType(
label: "ارزهای دیجیتال", asset: Assets.cryptoStatCat, id: 2),
StatMenuItemType(label: "فلزات پایه", asset: Assets.metalStatCat, id: 3),
StatMenuItemType(
label: "کامودیتی ها", asset: Assets.commodityStatCat, id: 4),
StatMenuItemType(label: "صنعت فولاد", asset: Assets.steelStatCat, id: 5),
StatMenuItemType(
label: "بازار سرمایه", asset: Assets.stockStatCat, id: 6),
];
Future.delayed(Duration.zero, () {
getStatistic();
});
}
void refresh() {
statCat = [
StatMenuItemType(
label: "بازار ارز و طلا", asset: Assets.currencyGoldStatCat, id: 1),
StatMenuItemType(
label: "ارزهای دیجیتال", asset: Assets.cryptoStatCat, id: 2),
StatMenuItemType(label: "فلزات پایه", asset: Assets.metalStatCat, id: 3),
StatMenuItemType(
label: "کامودیتی ها", asset: Assets.commodityStatCat, id: 4),
StatMenuItemType(label: "صنعت فولاد", asset: Assets.steelStatCat, id: 5),
StatMenuItemType(
label: "بازار سرمایه", asset: Assets.stockStatCat, id: 6),
];
update();
}
void resetState() {
contents.clear();
notifyListeners();

View File

@ -1,6 +1,5 @@
import 'package:didvan/config/design_config.dart';
import 'package:didvan/config/theme_data.dart';
import 'package:didvan/constants/assets.dart';
import 'package:didvan/routes/routes.dart';
import 'package:didvan/views/home/new_statistic/new_statistics_state.dart';
import 'package:didvan/views/widgets/didvan/text.dart';
@ -18,16 +17,6 @@ class StatMenuItemType {
{required this.label, required this.asset, required this.id});
}
List<StatMenuItemType> statCat = [
StatMenuItemType(
label: "بازار ارز و طلا", asset: Assets.currencyGoldStatCat, id: 1),
StatMenuItemType(label: "ارزهای دیجیتال", asset: Assets.cryptoStatCat, id: 2),
StatMenuItemType(label: "فلزات پایه", asset: Assets.metalStatCat, id: 3),
StatMenuItemType(label: "کامودیتی ها", asset: Assets.commodityStatCat, id: 4),
StatMenuItemType(label: "صنعت فولاد", asset: Assets.steelStatCat, id: 5),
StatMenuItemType(label: "بازار سرمایه", asset: Assets.stockStatCat, id: 6),
];
class NewStatisticCategories extends StatelessWidget {
const NewStatisticCategories({super.key});
@ -47,7 +36,7 @@ class NewStatisticCategories extends StatelessWidget {
state: context.watch<NewStatisticState>(),
builder: (context, state) => Wrap(
alignment: WrapAlignment.center,
children: statCat
children: state.statCat
.map(
(e) => GestureDetector(
onTap: () => _onTap(e.id, e.label, context, context),