some changes
This commit is contained in:
parent
d3252e931f
commit
dfe506bb01
|
|
@ -7,10 +7,14 @@ import 'package:didvan/models/view/action_sheet_data.dart';
|
||||||
import 'package:didvan/utils/action_sheet.dart';
|
import 'package:didvan/utils/action_sheet.dart';
|
||||||
import 'package:didvan/views/home/infography/infography_screen_state.dart';
|
import 'package:didvan/views/home/infography/infography_screen_state.dart';
|
||||||
import 'package:didvan/views/home/main/widgets/infography_item.dart';
|
import 'package:didvan/views/home/main/widgets/infography_item.dart';
|
||||||
|
import 'package:didvan/views/widgets/didvan/card.dart';
|
||||||
import 'package:didvan/views/widgets/didvan/checkbox.dart';
|
import 'package:didvan/views/widgets/didvan/checkbox.dart';
|
||||||
|
import 'package:didvan/views/widgets/didvan/divider.dart';
|
||||||
import 'package:didvan/views/widgets/didvan/text.dart';
|
import 'package:didvan/views/widgets/didvan/text.dart';
|
||||||
import 'package:didvan/views/widgets/item_title.dart';
|
import 'package:didvan/views/widgets/item_title.dart';
|
||||||
|
import 'package:didvan/views/widgets/overview/news.dart';
|
||||||
import 'package:didvan/views/widgets/search_field.dart';
|
import 'package:didvan/views/widgets/search_field.dart';
|
||||||
|
import 'package:didvan/views/widgets/shimmer_placeholder.dart';
|
||||||
import 'package:didvan/views/widgets/state_handlers/empty_result.dart';
|
import 'package:didvan/views/widgets/state_handlers/empty_result.dart';
|
||||||
import 'package:didvan/views/widgets/state_handlers/state_handler.dart';
|
import 'package:didvan/views/widgets/state_handlers/state_handler.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
@ -144,14 +148,6 @@ class _InfographyScreenState extends State<InfographyScreen> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return StateHandler<InfographyScreenState>(
|
|
||||||
emptyState: EmptyResult(
|
|
||||||
onNewSearch: () => _focusNode.requestFocus(),
|
|
||||||
),
|
|
||||||
enableEmptyState: context.watch<InfographyScreenState>().contents.isEmpty,
|
|
||||||
onRetry: context.read<InfographyScreenState>().init,
|
|
||||||
state: context.watch<InfographyScreenState>(),
|
|
||||||
builder: (context, state) {
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
backgroundColor: Theme.of(context).colorScheme.surface,
|
backgroundColor: Theme.of(context).colorScheme.surface,
|
||||||
|
|
@ -168,24 +164,43 @@ class _InfographyScreenState extends State<InfographyScreen> {
|
||||||
Container(
|
Container(
|
||||||
height: 80,
|
height: 80,
|
||||||
color: Theme.of(context).colorScheme.surface,
|
color: Theme.of(context).colorScheme.surface,
|
||||||
padding: const EdgeInsets.symmetric(
|
padding:
|
||||||
horizontal: 16.0, vertical: 16.0),
|
const EdgeInsets.symmetric(horizontal: 16.0, vertical: 16.0),
|
||||||
child: SearchField(
|
child: SearchField(
|
||||||
title: "اینفوگرافی",
|
title: "اینفوگرافی",
|
||||||
onChanged: _onChanged,
|
onChanged: _onChanged,
|
||||||
focusNode: _focusNode,
|
focusNode: _focusNode,
|
||||||
onFilterButtonPressed: _showFilterBottomSheet,
|
onFilterButtonPressed: _showFilterBottomSheet,
|
||||||
value: state.lastSearch,
|
value: context.watch<InfographyScreenState>().lastSearch,
|
||||||
isFiltered: state.filtering),
|
isFiltered: context.watch<InfographyScreenState>().filtering),
|
||||||
),
|
),
|
||||||
Expanded(
|
StateHandler<InfographyScreenState>(
|
||||||
|
placeholder: SingleChildScrollView(
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
placeholder,
|
||||||
|
const SizedBox(
|
||||||
|
height: 4,
|
||||||
|
),
|
||||||
|
placeholder
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
emptyState: EmptyResult(
|
||||||
|
onNewSearch: () => _focusNode.requestFocus(),
|
||||||
|
),
|
||||||
|
enableEmptyState:
|
||||||
|
context.watch<InfographyScreenState>().contents.isEmpty,
|
||||||
|
onRetry: context.read<InfographyScreenState>().init,
|
||||||
|
state: context.watch<InfographyScreenState>(),
|
||||||
|
builder: (context, state) => Expanded(
|
||||||
child: ListView.builder(
|
child: ListView.builder(
|
||||||
controller: _scrollController,
|
controller: _scrollController,
|
||||||
itemCount: state.contents.length,
|
itemCount: state.contents.length,
|
||||||
itemBuilder: (context, index) => InfographyItem(
|
itemBuilder: (context, index) => InfographyItem(
|
||||||
id: state.contents[index].id,
|
id: state.contents[index].id,
|
||||||
onMarkChanged: (id, value, _) =>
|
onMarkChanged: (id, value, _) => state.changeMark(id, value),
|
||||||
state.changeMark(id, value),
|
|
||||||
image: state.contents[index].image,
|
image: state.contents[index].image,
|
||||||
category: state.contents[index].category,
|
category: state.contents[index].category,
|
||||||
createdAt: state.contents[index].createdAt,
|
createdAt: state.contents[index].createdAt,
|
||||||
|
|
@ -195,10 +210,47 @@ class _InfographyScreenState extends State<InfographyScreen> {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
}
|
||||||
|
|
||||||
|
static Widget get placeholder => const DidvanCard(
|
||||||
|
margin: EdgeInsets.all(8),
|
||||||
|
padding: EdgeInsets.all(8),
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
ShimmerPlaceholder(
|
||||||
|
height: 16,
|
||||||
|
width: 240,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
SizedBox(height: 12),
|
||||||
|
ShimmerPlaceholder(height: 200, width: 400),
|
||||||
|
SizedBox(height: 12),
|
||||||
|
Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
ShimmerPlaceholder(
|
||||||
|
height: 32,
|
||||||
|
width: 100,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
DidvanDivider(
|
||||||
|
verticalPadding: 12,
|
||||||
|
),
|
||||||
|
ShimmerPlaceholder(
|
||||||
|
height: 16,
|
||||||
|
width: double.infinity,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import 'package:didvan/views/home/new_statistic/widgets/statistic_cat.dart';
|
||||||
import 'package:didvan/views/widgets/didvan/card.dart';
|
import 'package:didvan/views/widgets/didvan/card.dart';
|
||||||
import 'package:didvan/views/widgets/didvan/divider.dart';
|
import 'package:didvan/views/widgets/didvan/divider.dart';
|
||||||
import 'package:didvan/views/widgets/didvan/text.dart';
|
import 'package:didvan/views/widgets/didvan/text.dart';
|
||||||
|
import 'package:didvan/views/widgets/shimmer_placeholder.dart';
|
||||||
import 'package:didvan/views/widgets/state_handlers/state_handler.dart';
|
import 'package:didvan/views/widgets/state_handlers/state_handler.dart';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
@ -37,10 +38,7 @@ class _NewStatisticState extends State<NewStatistic> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return StateHandler<NewStatisticState>(
|
return Padding(
|
||||||
onRetry: context.read<NewStatisticState>().init,
|
|
||||||
state: context.watch<NewStatisticState>(),
|
|
||||||
builder: (context, state) => Padding(
|
|
||||||
padding: const EdgeInsets.all(8.0),
|
padding: const EdgeInsets.all(8.0),
|
||||||
child: SingleChildScrollView(
|
child: SingleChildScrollView(
|
||||||
child: Column(
|
child: Column(
|
||||||
|
|
@ -69,13 +67,40 @@ class _NewStatisticState extends State<NewStatistic> {
|
||||||
const DidvanDivider(
|
const DidvanDivider(
|
||||||
verticalPadding: 4,
|
verticalPadding: 4,
|
||||||
),
|
),
|
||||||
|
StateHandler<NewStatisticState>(
|
||||||
|
enableEmptyState: false,
|
||||||
|
onRetry: context.read<NewStatisticState>().init,
|
||||||
|
state: context.watch<NewStatisticState>(),
|
||||||
|
placeholder: Padding(
|
||||||
|
padding: const EdgeInsets.only(top: 48.0),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
placeholder,
|
||||||
|
SizedBox(
|
||||||
|
height: 8,
|
||||||
|
),
|
||||||
|
placeholder,
|
||||||
|
SizedBox(
|
||||||
|
height: 8,
|
||||||
|
),
|
||||||
|
placeholder,
|
||||||
|
SizedBox(
|
||||||
|
height: 8,
|
||||||
|
),
|
||||||
|
placeholder,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
builder: (context, state) => Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||||
|
children: [
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: () => Future.delayed(Duration.zero, () {
|
onTap: () => Future.delayed(Duration.zero, () {
|
||||||
Navigator.of(context)
|
Navigator.of(context)
|
||||||
.pushNamed(Routes.statGeneral, arguments: {
|
.pushNamed(Routes.statGeneral, arguments: {
|
||||||
"id": 7,
|
"id": 7,
|
||||||
"title": state.contents[0].header,
|
"title": state.contents[0].header,
|
||||||
}).then((value) => state.getStatistic());
|
}).then((value) => _reset());
|
||||||
}),
|
}),
|
||||||
child: StatHeader(
|
child: StatHeader(
|
||||||
header: state.contents[0].header,
|
header: state.contents[0].header,
|
||||||
|
|
@ -150,7 +175,10 @@ class _NewStatisticState extends State<NewStatistic> {
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: () => Future.delayed(Duration.zero, () {
|
onTap: () => Future.delayed(Duration.zero, () {
|
||||||
Navigator.of(context).pushNamed(Routes.statGeneral,
|
Navigator.of(context).pushNamed(Routes.statGeneral,
|
||||||
arguments: {"id": 3, "title": state.contents[3].header});
|
arguments: {
|
||||||
|
"id": 3,
|
||||||
|
"title": state.contents[3].header
|
||||||
|
});
|
||||||
}).then((value) => _reset()),
|
}).then((value) => _reset()),
|
||||||
child: StatHeader(
|
child: StatHeader(
|
||||||
header: state.contents[3].header,
|
header: state.contents[3].header,
|
||||||
|
|
@ -221,9 +249,61 @@ class _NewStatisticState extends State<NewStatistic> {
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Widget get placeholder => const Column(
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
ShimmerPlaceholder(
|
||||||
|
height: 16,
|
||||||
|
width: 100,
|
||||||
|
),
|
||||||
|
ShimmerPlaceholder(
|
||||||
|
height: 16,
|
||||||
|
width: 50,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 8,
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
DidvanCard(
|
||||||
|
child: ShimmerPlaceholder(
|
||||||
|
height: 80,
|
||||||
|
width: 60,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
DidvanCard(
|
||||||
|
child: ShimmerPlaceholder(
|
||||||
|
height: 80,
|
||||||
|
width: 60,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
DidvanCard(
|
||||||
|
child: ShimmerPlaceholder(
|
||||||
|
height: 80,
|
||||||
|
width: 60,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
DidvanCard(
|
||||||
|
child: ShimmerPlaceholder(
|
||||||
|
height: 80,
|
||||||
|
width: 60,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
class StatMainCard extends StatelessWidget {
|
class StatMainCard extends StatelessWidget {
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,10 @@ import 'dart:async';
|
||||||
|
|
||||||
import 'package:didvan/views/home/new_statistic/statistics_details/stat_cats_general_state.dart';
|
import 'package:didvan/views/home/new_statistic/statistics_details/stat_cats_general_state.dart';
|
||||||
import 'package:didvan/views/home/new_statistic/widgets/general_stat_card.dart';
|
import 'package:didvan/views/home/new_statistic/widgets/general_stat_card.dart';
|
||||||
|
import 'package:didvan/views/widgets/didvan/card.dart';
|
||||||
import 'package:didvan/views/widgets/didvan/text.dart';
|
import 'package:didvan/views/widgets/didvan/text.dart';
|
||||||
import 'package:didvan/views/widgets/search_field.dart';
|
import 'package:didvan/views/widgets/search_field.dart';
|
||||||
|
import 'package:didvan/views/widgets/shimmer_placeholder.dart';
|
||||||
import 'package:didvan/views/widgets/state_handlers/empty_result.dart';
|
import 'package:didvan/views/widgets/state_handlers/empty_result.dart';
|
||||||
import 'package:didvan/views/widgets/state_handlers/state_handler.dart';
|
import 'package:didvan/views/widgets/state_handlers/state_handler.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
@ -74,15 +76,6 @@ class _StatGeneralScreenState extends State<StatGeneralScreen> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return StateHandler<StatGeneralScreenState>(
|
|
||||||
onRetry: context.read<StatGeneralScreenState>().init,
|
|
||||||
state: context.watch<StatGeneralScreenState>(),
|
|
||||||
emptyState: EmptyResult(
|
|
||||||
onNewSearch: () => _focusNode.requestFocus(),
|
|
||||||
),
|
|
||||||
enableEmptyState:
|
|
||||||
context.watch<StatGeneralScreenState>().contents.isEmpty,
|
|
||||||
builder: (context, state) {
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
elevation: 0.0,
|
elevation: 0.0,
|
||||||
|
|
@ -99,13 +92,13 @@ class _StatGeneralScreenState extends State<StatGeneralScreen> {
|
||||||
Container(
|
Container(
|
||||||
height: 80,
|
height: 80,
|
||||||
color: Theme.of(context).colorScheme.surface,
|
color: Theme.of(context).colorScheme.surface,
|
||||||
padding: const EdgeInsets.symmetric(
|
padding:
|
||||||
horizontal: 16.0, vertical: 16.0),
|
const EdgeInsets.symmetric(horizontal: 16.0, vertical: 16.0),
|
||||||
child: SearchField(
|
child: SearchField(
|
||||||
title: widget.pageData['title'],
|
title: widget.pageData['title'],
|
||||||
onChanged: _onChanged,
|
onChanged: _onChanged,
|
||||||
focusNode: _focusNode,
|
focusNode: _focusNode,
|
||||||
value: state.lastSearch,
|
value: context.watch<StatGeneralScreenState>().lastSearch,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Padding(
|
Padding(
|
||||||
|
|
@ -114,7 +107,28 @@ class _StatGeneralScreenState extends State<StatGeneralScreen> {
|
||||||
alignment: Alignment.centerLeft,
|
alignment: Alignment.centerLeft,
|
||||||
child: DidvanText(formattedDate.toPersianDate())),
|
child: DidvanText(formattedDate.toPersianDate())),
|
||||||
),
|
),
|
||||||
Expanded(
|
StateHandler<StatGeneralScreenState>(
|
||||||
|
onRetry: context.read<StatGeneralScreenState>().init,
|
||||||
|
state: context.watch<StatGeneralScreenState>(),
|
||||||
|
emptyState: EmptyResult(
|
||||||
|
onNewSearch: () => _focusNode.requestFocus(),
|
||||||
|
),
|
||||||
|
enableEmptyState:
|
||||||
|
context.watch<StatGeneralScreenState>().contents.isEmpty,
|
||||||
|
placeholder: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
placeHolder,
|
||||||
|
const SizedBox(
|
||||||
|
height: 8,
|
||||||
|
),
|
||||||
|
placeHolder,
|
||||||
|
const SizedBox(
|
||||||
|
height: 8,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
builder: (context, state) => Expanded(
|
||||||
child: ListView.builder(
|
child: ListView.builder(
|
||||||
controller: _scrollController,
|
controller: _scrollController,
|
||||||
physics: const ClampingScrollPhysics(),
|
physics: const ClampingScrollPhysics(),
|
||||||
|
|
@ -126,10 +140,63 @@ class _StatGeneralScreenState extends State<StatGeneralScreen> {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
}
|
||||||
|
|
||||||
|
static Widget get placeHolder => const Column(
|
||||||
|
children: [
|
||||||
|
DidvanCard(
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
SizedBox(height: 4),
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
ShimmerPlaceholder(width: 80, height: 16),
|
||||||
|
Spacer(),
|
||||||
|
ShimmerPlaceholder(width: 50, height: 14),
|
||||||
|
SizedBox(width: 8),
|
||||||
|
ShimmerPlaceholder(width: 50, height: 16),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
SizedBox(height: 16),
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
ShimmerPlaceholder(width: 150, height: 12),
|
||||||
|
Spacer(),
|
||||||
|
ShimmerPlaceholder(width: 80, height: 12),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(height: 20),
|
||||||
|
DidvanCard(
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
SizedBox(height: 4),
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
ShimmerPlaceholder(width: 80, height: 16),
|
||||||
|
Spacer(),
|
||||||
|
ShimmerPlaceholder(width: 50, height: 14),
|
||||||
|
SizedBox(width: 8),
|
||||||
|
ShimmerPlaceholder(width: 50, height: 16),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
SizedBox(height: 16),
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
ShimmerPlaceholder(width: 150, height: 12),
|
||||||
|
Spacer(),
|
||||||
|
ShimmerPlaceholder(width: 80, height: 12),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,11 @@ import 'package:didvan/views/home/new_statistic/stock/newStock_state.dart';
|
||||||
import 'package:didvan/views/home/new_statistic/stock/total_type3.dart';
|
import 'package:didvan/views/home/new_statistic/stock/total_type3.dart';
|
||||||
import 'package:didvan/views/home/new_statistic/stock/total_type4.dart';
|
import 'package:didvan/views/home/new_statistic/stock/total_type4.dart';
|
||||||
import 'package:didvan/views/widgets/didvan/card.dart';
|
import 'package:didvan/views/widgets/didvan/card.dart';
|
||||||
|
import 'package:didvan/views/widgets/didvan/divider.dart';
|
||||||
import 'package:didvan/views/widgets/didvan/text.dart';
|
import 'package:didvan/views/widgets/didvan/text.dart';
|
||||||
import 'package:didvan/views/widgets/search_field.dart';
|
import 'package:didvan/views/widgets/search_field.dart';
|
||||||
import 'package:didvan/views/widgets/shimmer_placeholder.dart';
|
import 'package:didvan/views/widgets/shimmer_placeholder.dart';
|
||||||
|
import 'package:didvan/views/widgets/state_handlers/empty_result.dart';
|
||||||
import 'package:didvan/views/widgets/state_handlers/state_handler.dart';
|
import 'package:didvan/views/widgets/state_handlers/state_handler.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
@ -71,10 +73,7 @@ class _NewStockState extends State<NewStock> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return StateHandler<NewStockState>(
|
return Scaffold(
|
||||||
onRetry: context.read<NewStockState>().init,
|
|
||||||
state: context.watch<NewStockState>(),
|
|
||||||
builder: (context, state) => Scaffold(
|
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
backgroundColor: Theme.of(context).colorScheme.surface,
|
backgroundColor: Theme.of(context).colorScheme.surface,
|
||||||
elevation: 0.0,
|
elevation: 0.0,
|
||||||
|
|
@ -94,7 +93,7 @@ class _NewStockState extends State<NewStock> {
|
||||||
const EdgeInsets.symmetric(horizontal: 16.0, vertical: 16.0),
|
const EdgeInsets.symmetric(horizontal: 16.0, vertical: 16.0),
|
||||||
child: SearchField(
|
child: SearchField(
|
||||||
title: "بازار سرمایه",
|
title: "بازار سرمایه",
|
||||||
value: state.lastSearch,
|
value: context.watch<NewStockState>().lastSearch,
|
||||||
onChanged: _onChanged,
|
onChanged: _onChanged,
|
||||||
focusNode: _focusNode,
|
focusNode: _focusNode,
|
||||||
),
|
),
|
||||||
|
|
@ -122,18 +121,30 @@ class _NewStockState extends State<NewStock> {
|
||||||
onToggle: (index) {
|
onToggle: (index) {
|
||||||
setState(() {
|
setState(() {
|
||||||
value = index!;
|
value = index!;
|
||||||
state.type = index + 1;
|
context.read<NewStockState>().type = index + 1;
|
||||||
state.getStock(page: 1);
|
context.read<NewStockState>().getStock(page: 1);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: MediaQuery.of(context).size.height / 48,
|
height: MediaQuery.of(context).size.height / 48,
|
||||||
),
|
),
|
||||||
Expanded(
|
StateHandler<NewStockState>(
|
||||||
|
onRetry: context.read<NewStockState>().init,
|
||||||
|
state: context.watch<NewStockState>(),
|
||||||
|
emptyState: EmptyResult(
|
||||||
|
onNewSearch: () => _focusNode.requestFocus(),
|
||||||
|
),
|
||||||
|
enableEmptyState: context.watch<NewStockState>().contents.isEmpty,
|
||||||
|
placeholder: Column(
|
||||||
|
children: [
|
||||||
|
placeholder2,
|
||||||
|
placeholder2,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
builder: (context, state) => Expanded(
|
||||||
child: ListView.builder(
|
child: ListView.builder(
|
||||||
controller: _scrollController,
|
controller: _scrollController,
|
||||||
//physics: const ClampingScrollPhysics(),
|
|
||||||
itemCount: state.length,
|
itemCount: state.length,
|
||||||
itemBuilder: (context, index) {
|
itemBuilder: (context, index) {
|
||||||
if (state.type == 1) {
|
if (state.type == 1) {
|
||||||
|
|
@ -172,73 +183,94 @@ class _NewStockState extends State<NewStock> {
|
||||||
totalContent: state.totalContent_type3[index]);
|
totalContent: state.totalContent_type3[index]);
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
],
|
|
||||||
),
|
),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Widget get placeholder => const DidvanCard(
|
static Widget get placeholder2 => const DidvanCard(
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
|
||||||
children: [
|
children: [
|
||||||
ShimmerPlaceholder(
|
ShimmerPlaceholder(height: 18, width: 400),
|
||||||
height: 40,
|
DidvanDivider(
|
||||||
width: 40,
|
verticalPadding: 8,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 12,
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
ShimmerPlaceholder(
|
ShimmerPlaceholder(
|
||||||
height: 40,
|
width: 100,
|
||||||
width: 40,
|
height: 18,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 12,
|
||||||
),
|
),
|
||||||
ShimmerPlaceholder(
|
ShimmerPlaceholder(
|
||||||
height: 40,
|
width: 100,
|
||||||
width: 40,
|
height: 18,
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
ShimmerPlaceholder(
|
|
||||||
height: 40,
|
|
||||||
width: 40,
|
|
||||||
),
|
|
||||||
ShimmerPlaceholder(
|
|
||||||
height: 40,
|
|
||||||
width: 40,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
ShimmerPlaceholder(
|
|
||||||
height: 40,
|
|
||||||
width: 40,
|
|
||||||
),
|
|
||||||
ShimmerPlaceholder(
|
|
||||||
height: 40,
|
|
||||||
width: 40,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
ShimmerPlaceholder(
|
|
||||||
height: 40,
|
|
||||||
width: 40,
|
|
||||||
),
|
|
||||||
ShimmerPlaceholder(
|
|
||||||
height: 40,
|
|
||||||
width: 40,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
));
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 12,
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
ShimmerPlaceholder(
|
||||||
|
width: 100,
|
||||||
|
height: 18,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 12,
|
||||||
|
),
|
||||||
|
ShimmerPlaceholder(
|
||||||
|
width: 100,
|
||||||
|
height: 18,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
SizedBox(height: 12),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
ShimmerPlaceholder(
|
||||||
|
width: 100,
|
||||||
|
height: 18,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 12,
|
||||||
|
),
|
||||||
|
ShimmerPlaceholder(
|
||||||
|
width: 100,
|
||||||
|
height: 18,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 12,
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
ShimmerPlaceholder(
|
||||||
|
width: 100,
|
||||||
|
height: 18,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 12,
|
||||||
|
),
|
||||||
|
ShimmerPlaceholder(
|
||||||
|
width: 100,
|
||||||
|
height: 18,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,8 @@ class _NewStatisticOverviewCardState extends State<NewStatisticOverviewCard> {
|
||||||
'title': widget.statistic.title,
|
'title': widget.statistic.title,
|
||||||
'marked': widget.statistic.marked,
|
'marked': widget.statistic.marked,
|
||||||
}).then(
|
}).then(
|
||||||
(value) => state.getGeneralStatContent(page: 1),
|
(value) =>
|
||||||
|
state.getGeneralStatContent(page: 1, id: state.cat),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -91,6 +92,11 @@ class _NewStatisticOverviewCardState extends State<NewStatisticOverviewCard> {
|
||||||
style: Theme.of(context).textTheme.bodyLarge,
|
style: Theme.of(context).textTheme.bodyLarge,
|
||||||
),
|
),
|
||||||
const Spacer(),
|
const Spacer(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
|
children: [
|
||||||
if (_hasDiff)
|
if (_hasDiff)
|
||||||
DidvanText(
|
DidvanText(
|
||||||
'(${widget.statistic.data.d})',
|
'(${widget.statistic.data.d})',
|
||||||
|
|
|
||||||
|
|
@ -17,9 +17,14 @@ class StatMenuItemType {
|
||||||
{required this.label, required this.asset, required this.id});
|
{required this.label, required this.asset, required this.id});
|
||||||
}
|
}
|
||||||
|
|
||||||
class NewStatisticCategories extends StatelessWidget {
|
class NewStatisticCategories extends StatefulWidget {
|
||||||
const NewStatisticCategories({super.key});
|
const NewStatisticCategories({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<NewStatisticCategories> createState() => _NewStatisticCategoriesState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _NewStatisticCategoriesState extends State<NewStatisticCategories> {
|
||||||
void _onTap(int id, String title, BuildContext context, BuildContext ctx) {
|
void _onTap(int id, String title, BuildContext context, BuildContext ctx) {
|
||||||
if (id != 6) {
|
if (id != 6) {
|
||||||
Navigator.of(context)
|
Navigator.of(context)
|
||||||
|
|
@ -31,10 +36,8 @@ class NewStatisticCategories extends StatelessWidget {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return StateHandler<NewStatisticState>(
|
final state = context.read<NewStatisticState>();
|
||||||
onRetry: () {},
|
return Wrap(
|
||||||
state: context.watch<NewStatisticState>(),
|
|
||||||
builder: (context, state) => Wrap(
|
|
||||||
alignment: WrapAlignment.center,
|
alignment: WrapAlignment.center,
|
||||||
children: state.statCat
|
children: state.statCat
|
||||||
.map(
|
.map(
|
||||||
|
|
@ -69,7 +72,6 @@ class NewStatisticCategories extends StatelessWidget {
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.toList(),
|
.toList(),
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue