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:
parent
39ef54e52d
commit
6740479395
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
import 'package:didvan/config/theme_data.dart';
|
import 'package:didvan/config/theme_data.dart';
|
||||||
import 'package:didvan/constants/app_icons.dart';
|
import 'package:didvan/constants/app_icons.dart';
|
||||||
import 'package:didvan/models/new_statistic/new_statistics_model.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/routes/routes.dart';
|
||||||
import 'package:didvan/views/home/new_statistic/new_statistics_state.dart';
|
import 'package:didvan/views/home/new_statistic/new_statistics_state.dart';
|
||||||
import 'package:didvan/views/home/new_statistic/widgets/statistic_cat.dart';
|
import 'package:didvan/views/home/new_statistic/widgets/statistic_cat.dart';
|
||||||
|
|
@ -25,6 +25,7 @@ class _NewStatisticState extends State<NewStatistic> {
|
||||||
void initState() {
|
void initState() {
|
||||||
final state = context.read<NewStatisticState>();
|
final state = context.read<NewStatisticState>();
|
||||||
state.init();
|
state.init();
|
||||||
|
context.read<ThemeProvider>().addListener(state.refresh);
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,18 @@
|
||||||
import 'dart:developer';
|
import 'dart:developer';
|
||||||
|
|
||||||
|
import 'package:didvan/constants/assets.dart';
|
||||||
import 'package:didvan/models/enums.dart';
|
import 'package:didvan/models/enums.dart';
|
||||||
import 'package:didvan/models/new_statistic/new_statistics_model.dart';
|
import 'package:didvan/models/new_statistic/new_statistics_model.dart';
|
||||||
import 'package:didvan/providers/core.dart';
|
import 'package:didvan/providers/core.dart';
|
||||||
import 'package:didvan/services/network/request.dart';
|
import 'package:didvan/services/network/request.dart';
|
||||||
import 'package:didvan/services/network/request_helper.dart';
|
import 'package:didvan/services/network/request_helper.dart';
|
||||||
|
import 'package:didvan/views/home/new_statistic/widgets/statistic_cat.dart';
|
||||||
|
|
||||||
class NewStatisticState extends CoreProvier {
|
class NewStatisticState extends CoreProvier {
|
||||||
final List<CategoryList> contents = [];
|
final List<CategoryList> contents = [];
|
||||||
|
|
||||||
|
List<StatMenuItemType> statCat = [];
|
||||||
|
|
||||||
Future<void> getStatistic() async {
|
Future<void> getStatistic() async {
|
||||||
appState = AppState.busy;
|
appState = AppState.busy;
|
||||||
final RequestService service = RequestService(
|
final RequestService service = RequestService(
|
||||||
|
|
@ -29,11 +33,39 @@ class NewStatisticState extends CoreProvier {
|
||||||
}
|
}
|
||||||
|
|
||||||
void init() {
|
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, () {
|
Future.delayed(Duration.zero, () {
|
||||||
getStatistic();
|
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() {
|
void resetState() {
|
||||||
contents.clear();
|
contents.clear();
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
import 'package:didvan/config/design_config.dart';
|
import 'package:didvan/config/design_config.dart';
|
||||||
import 'package:didvan/config/theme_data.dart';
|
import 'package:didvan/config/theme_data.dart';
|
||||||
import 'package:didvan/constants/assets.dart';
|
|
||||||
import 'package:didvan/routes/routes.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/new_statistics_state.dart';
|
||||||
import 'package:didvan/views/widgets/didvan/text.dart';
|
import 'package:didvan/views/widgets/didvan/text.dart';
|
||||||
|
|
@ -18,16 +17,6 @@ class StatMenuItemType {
|
||||||
{required this.label, required this.asset, required this.id});
|
{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 {
|
class NewStatisticCategories extends StatelessWidget {
|
||||||
const NewStatisticCategories({super.key});
|
const NewStatisticCategories({super.key});
|
||||||
|
|
||||||
|
|
@ -47,7 +36,7 @@ class NewStatisticCategories extends StatelessWidget {
|
||||||
state: context.watch<NewStatisticState>(),
|
state: context.watch<NewStatisticState>(),
|
||||||
builder: (context, state) => Wrap(
|
builder: (context, state) => Wrap(
|
||||||
alignment: WrapAlignment.center,
|
alignment: WrapAlignment.center,
|
||||||
children: statCat
|
children: state.statCat
|
||||||
.map(
|
.map(
|
||||||
(e) => GestureDetector(
|
(e) => GestureDetector(
|
||||||
onTap: () => _onTap(e.id, e.label, context, context),
|
onTap: () => _onTap(e.id, e.label, context, context),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue