bug fixes
This commit is contained in:
parent
8f0b95ae81
commit
256b8db0ad
|
|
@ -4,6 +4,8 @@ class StudioRequestArgs {
|
||||||
final String? order;
|
final String? order;
|
||||||
final String? type;
|
final String? type;
|
||||||
final bool? asc;
|
final bool? asc;
|
||||||
|
final String? startDate;
|
||||||
|
final String? endDate;
|
||||||
|
|
||||||
const StudioRequestArgs({
|
const StudioRequestArgs({
|
||||||
required this.page,
|
required this.page,
|
||||||
|
|
@ -11,5 +13,7 @@ class StudioRequestArgs {
|
||||||
this.search,
|
this.search,
|
||||||
this.order,
|
this.order,
|
||||||
this.type,
|
this.type,
|
||||||
|
this.startDate,
|
||||||
|
this.endDate,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,9 @@ class UserProvider extends CoreProvier {
|
||||||
int _unreadMessageCount = 0;
|
int _unreadMessageCount = 0;
|
||||||
|
|
||||||
set unreadMessageCount(int value) {
|
set unreadMessageCount(int value) {
|
||||||
|
if (value < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
_unreadMessageCount = value;
|
_unreadMessageCount = value;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -97,6 +97,8 @@ class RequestHelper {
|
||||||
MapEntry('order', args.order),
|
MapEntry('order', args.order),
|
||||||
MapEntry('search', args.search),
|
MapEntry('search', args.search),
|
||||||
MapEntry('asc', args.asc),
|
MapEntry('asc', args.asc),
|
||||||
|
MapEntry('start', args.startDate),
|
||||||
|
MapEntry('end', args.endDate),
|
||||||
])}';
|
])}';
|
||||||
static String studioOverviews({required StudioRequestArgs args}) =>
|
static String studioOverviews({required StudioRequestArgs args}) =>
|
||||||
_baseStudioUrl +
|
_baseStudioUrl +
|
||||||
|
|
@ -106,6 +108,8 @@ class RequestHelper {
|
||||||
MapEntry('order', args.order),
|
MapEntry('order', args.order),
|
||||||
MapEntry('search', args.search),
|
MapEntry('search', args.search),
|
||||||
MapEntry('asc', args.asc),
|
MapEntry('asc', args.asc),
|
||||||
|
MapEntry('start', args.startDate),
|
||||||
|
MapEntry('end', args.endDate),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
static String statisticOverviews(int? category) =>
|
static String statisticOverviews(int? category) =>
|
||||||
|
|
|
||||||
|
|
@ -10,11 +10,13 @@ import 'package:didvan/utils/action_sheet.dart';
|
||||||
import 'package:didvan/views/home/studio/studio_state.dart';
|
import 'package:didvan/views/home/studio/studio_state.dart';
|
||||||
import 'package:didvan/views/home/studio/widgets/slider.dart';
|
import 'package:didvan/views/home/studio/widgets/slider.dart';
|
||||||
import 'package:didvan/views/home/studio/widgets/tab_bar.dart';
|
import 'package:didvan/views/home/studio/widgets/tab_bar.dart';
|
||||||
|
import 'package:didvan/views/home/widgets/date_picker_button.dart';
|
||||||
import 'package:didvan/views/home/widgets/logo_app_bar.dart';
|
import 'package:didvan/views/home/widgets/logo_app_bar.dart';
|
||||||
import 'package:didvan/views/home/widgets/overview/podcast.dart';
|
import 'package:didvan/views/home/widgets/overview/podcast.dart';
|
||||||
import 'package:didvan/views/home/widgets/overview/video.dart';
|
import 'package:didvan/views/home/widgets/overview/video.dart';
|
||||||
import 'package:didvan/views/home/widgets/search_field.dart';
|
import 'package:didvan/views/home/widgets/search_field.dart';
|
||||||
import 'package:didvan/views/widgets/animated_visibility.dart';
|
import 'package:didvan/views/widgets/animated_visibility.dart';
|
||||||
|
import 'package:didvan/views/widgets/didvan/checkbox.dart';
|
||||||
import 'package:didvan/views/widgets/didvan/divider.dart';
|
import 'package:didvan/views/widgets/didvan/divider.dart';
|
||||||
import 'package:didvan/views/widgets/didvan/icon_button.dart';
|
import 'package:didvan/views/widgets/didvan/icon_button.dart';
|
||||||
import 'package:didvan/views/widgets/didvan/radial_button.dart';
|
import 'package:didvan/views/widgets/didvan/radial_button.dart';
|
||||||
|
|
@ -75,6 +77,8 @@ class _StudioState extends State<Studio> {
|
||||||
title: state.videosSelected ? 'ویدئو' : 'پادکست',
|
title: state.videosSelected ? 'ویدئو' : 'پادکست',
|
||||||
onChanged: _onChanged,
|
onChanged: _onChanged,
|
||||||
focusNode: _focusNode,
|
focusNode: _focusNode,
|
||||||
|
isFiltered: false,
|
||||||
|
onFilterButtonPressed: _showFilterBottomSheet,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
@ -224,4 +228,49 @@ class _StudioState extends State<Studio> {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> _showFilterBottomSheet() async {
|
||||||
|
final state = context.read<StudioState>();
|
||||||
|
await ActionSheetUtils.showBottomSheet(
|
||||||
|
data: ActionSheetData(
|
||||||
|
title: 'فیلتر جستجو',
|
||||||
|
smallDismissButton: true,
|
||||||
|
titleIcon: DidvanIcons.filter_regular,
|
||||||
|
dismissTitle: 'حذف فیلتر',
|
||||||
|
confrimTitle: 'نمایش نتایج',
|
||||||
|
onDismissed: () => state.resetFilters(false),
|
||||||
|
onConfirmed: () => state.getStudios(page: 1),
|
||||||
|
content: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
ItemTitle(
|
||||||
|
title: 'تاریخ رادار',
|
||||||
|
style: Theme.of(context).textTheme.bodyText2,
|
||||||
|
icon: DidvanIcons.calendar_range_regular,
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8),
|
||||||
|
StatefulBuilder(
|
||||||
|
builder: (context, setState) => Row(
|
||||||
|
children: [
|
||||||
|
DatePickerButton(
|
||||||
|
initialValue: state.startDate?.toString(),
|
||||||
|
emptyText: 'از تاریخ',
|
||||||
|
onPicked: (date) => setState(() => state.startDate = date),
|
||||||
|
lastDate: state.endDate,
|
||||||
|
),
|
||||||
|
const SizedBox(width: 8),
|
||||||
|
DatePickerButton(
|
||||||
|
initialValue: state.endDate,
|
||||||
|
emptyText: 'تا تاریخ',
|
||||||
|
onPicked: (date) => setState(() => state.endDate = date),
|
||||||
|
firstDate: state.startDate,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,9 @@ class StudioState extends CoreProvier {
|
||||||
final List<OverviewData> studios = [];
|
final List<OverviewData> studios = [];
|
||||||
final List<SliderData> sliders = [];
|
final List<SliderData> sliders = [];
|
||||||
|
|
||||||
|
String? startDate;
|
||||||
|
String? endDate;
|
||||||
|
|
||||||
String search = '';
|
String search = '';
|
||||||
String lastSearch = '';
|
String lastSearch = '';
|
||||||
int page = 1;
|
int page = 1;
|
||||||
|
|
@ -25,6 +28,16 @@ class StudioState extends CoreProvier {
|
||||||
|
|
||||||
bool get searching => search.isNotEmpty;
|
bool get searching => search.isNotEmpty;
|
||||||
|
|
||||||
|
void resetFilters(bool isInit) {
|
||||||
|
startDate = null;
|
||||||
|
endDate = null;
|
||||||
|
search = '';
|
||||||
|
lastSearch = '';
|
||||||
|
if (!isInit) {
|
||||||
|
getStudios(page: 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
set videosSelected(bool value) {
|
set videosSelected(bool value) {
|
||||||
if (_videosSelected == value || appState == AppState.busy) return;
|
if (_videosSelected == value || appState == AppState.busy) return;
|
||||||
_videosSelected = value;
|
_videosSelected = value;
|
||||||
|
|
@ -91,6 +104,8 @@ class StudioState extends CoreProvier {
|
||||||
search: search,
|
search: search,
|
||||||
order: order,
|
order: order,
|
||||||
asc: selectedSortTypeIndex == 1,
|
asc: selectedSortTypeIndex == 1,
|
||||||
|
endDate: endDate?.split(' ').first,
|
||||||
|
startDate: startDate?.split(' ').first,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@ class AudioPlayerWidget extends StatelessWidget {
|
||||||
DidvanText(
|
DidvanText(
|
||||||
state.stopOnPodcastEnds
|
state.stopOnPodcastEnds
|
||||||
? 'پایان پادکست'
|
? 'پایان پادکست'
|
||||||
: '\'' + state.timerValue.toString(),
|
: '\'${state.timerValue}',
|
||||||
isEnglishFont: true,
|
isEnglishFont: true,
|
||||||
style: Theme.of(context).textTheme.overline,
|
style: Theme.of(context).textTheme.overline,
|
||||||
color: Theme.of(context).colorScheme.title,
|
color: Theme.of(context).colorScheme.title,
|
||||||
|
|
@ -293,7 +293,7 @@ class AudioPlayerWidget extends StatelessWidget {
|
||||||
(timer) {
|
(timer) {
|
||||||
timerValue--;
|
timerValue--;
|
||||||
if (timerValue == 0) {
|
if (timerValue == 0) {
|
||||||
MediaService.audioPlayer.stop();
|
MediaService.audioPlayer.pause();
|
||||||
state.stopOnPodcastEnds = false;
|
state.stopOnPodcastEnds = false;
|
||||||
state.timer?.cancel();
|
state.timer?.cancel();
|
||||||
state.timer = null;
|
state.timer = null;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue