From 6740479395f3864560ef826731936fbd3cdc3f56 Mon Sep 17 00:00:00 2001 From: MohammadTaha Basiri Date: Mon, 1 Apr 2024 19:20:16 +0330 Subject: [PATCH] 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 --- .../home/new_statistic/new_statistic.dart | 3 +- .../new_statistic/new_statistics_state.dart | 32 +++++++++++++++++++ .../new_statistic/widgets/statistic_cat.dart | 13 +------- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/lib/views/home/new_statistic/new_statistic.dart b/lib/views/home/new_statistic/new_statistic.dart index bd1c0ee..6684343 100644 --- a/lib/views/home/new_statistic/new_statistic.dart +++ b/lib/views/home/new_statistic/new_statistic.dart @@ -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 { void initState() { final state = context.read(); state.init(); + context.read().addListener(state.refresh); super.initState(); } diff --git a/lib/views/home/new_statistic/new_statistics_state.dart b/lib/views/home/new_statistic/new_statistics_state.dart index 8ce4f4e..b3d65e0 100644 --- a/lib/views/home/new_statistic/new_statistics_state.dart +++ b/lib/views/home/new_statistic/new_statistics_state.dart @@ -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 contents = []; + List statCat = []; + Future 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(); diff --git a/lib/views/home/new_statistic/widgets/statistic_cat.dart b/lib/views/home/new_statistic/widgets/statistic_cat.dart index 54e8980..6965629 100644 --- a/lib/views/home/new_statistic/widgets/statistic_cat.dart +++ b/lib/views/home/new_statistic/widgets/statistic_cat.dart @@ -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 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(), builder: (context, state) => Wrap( alignment: WrapAlignment.center, - children: statCat + children: state.statCat .map( (e) => GestureDetector( onTap: () => _onTap(e.id, e.label, context, context),