backup!
This commit is contained in:
parent
19c2b54f19
commit
e18138aa8d
|
|
@ -19,10 +19,10 @@ import 'package:didvan/views/radar/radar.dart';
|
|||
import 'package:didvan/views/radar/radar_details/radar_details.dart';
|
||||
import 'package:didvan/views/radar/radar_details/radar_details_state.dart';
|
||||
import 'package:didvan/views/radar/radar_state.dart';
|
||||
import 'package:didvan/views/profile/bookmarks/bookmarks.dart';
|
||||
import 'package:didvan/views/profile/bookmarks/bookmark_state.dart';
|
||||
import 'package:didvan/views/profile/bookmarks/filtered_bookmark/filtered_bookmark.dart';
|
||||
import 'package:didvan/views/profile/bookmarks/filtered_bookmark/filtered_bookmarks_state.dart';
|
||||
import 'package:didvan/views/home/bookmarks/bookmarks.dart';
|
||||
import 'package:didvan/views/home/bookmarks/bookmark_state.dart';
|
||||
import 'package:didvan/views/home/bookmarks/filtered_bookmark/filtered_bookmark.dart';
|
||||
import 'package:didvan/views/home/bookmarks/filtered_bookmark/filtered_bookmarks_state.dart';
|
||||
import 'package:didvan/views/profile/direct_list/direct_list.dart';
|
||||
import 'package:didvan/views/profile/direct_list/direct_list_state.dart';
|
||||
import 'package:didvan/views/profile/general_settings/settings.dart';
|
||||
|
|
@ -71,6 +71,9 @@ class RouteGenerator {
|
|||
ChangeNotifierProvider<PodcastsState>(
|
||||
create: (context) => PodcastsState(),
|
||||
),
|
||||
ChangeNotifierProvider<BookmarksState>(
|
||||
create: (context) => BookmarksState(),
|
||||
),
|
||||
],
|
||||
child: const Home(),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -2,12 +2,11 @@ import 'dart:async';
|
|||
|
||||
import 'package:didvan/config/design_config.dart';
|
||||
import 'package:didvan/constants/app_icons.dart';
|
||||
import 'package:didvan/models/view/app_bar_data.dart';
|
||||
import 'package:didvan/routes/routes.dart';
|
||||
import 'package:didvan/views/profile/bookmarks/bookmark_state.dart';
|
||||
import 'package:didvan/views/home/bookmarks/bookmark_state.dart';
|
||||
import 'package:didvan/views/widgets/menu_item.dart';
|
||||
import 'package:didvan/views/widgets/overview/multitype.dart';
|
||||
import 'package:didvan/views/widgets/search_field.dart';
|
||||
// import 'package:didvan/views/widgets/search_field.dart';
|
||||
import 'package:didvan/views/widgets/animated_visibility.dart';
|
||||
import 'package:didvan/views/widgets/didvan/card.dart';
|
||||
import 'package:didvan/views/widgets/didvan/divider.dart';
|
||||
|
|
@ -28,7 +27,7 @@ class Bookmarks extends StatefulWidget {
|
|||
|
||||
class _BookmarksState extends State<Bookmarks> {
|
||||
final _focuseNode = FocusNode();
|
||||
Timer? _timer;
|
||||
// Timer? _timer;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
|
|
@ -42,10 +41,11 @@ class _BookmarksState extends State<Bookmarks> {
|
|||
Widget build(BuildContext context) {
|
||||
final state = context.watch<BookmarksState>();
|
||||
return DidvanScaffold(
|
||||
appBarData: AppBarData(
|
||||
title: 'نشان شدهها',
|
||||
hasBack: true,
|
||||
),
|
||||
appBarData: null,
|
||||
// appBarData: AppBarData(
|
||||
// title: 'نشان شدهها',
|
||||
// hasBack: true,
|
||||
// ),
|
||||
slivers: [
|
||||
SliverStateHandler<BookmarksState>(
|
||||
state: state,
|
||||
|
|
@ -60,6 +60,7 @@ class _BookmarksState extends State<Bookmarks> {
|
|||
item: state.bookmarks[index],
|
||||
onMarkChanged: state.onMarkChanged,
|
||||
hasUnmarkConfirmation: true,
|
||||
enableCaption: true,
|
||||
);
|
||||
},
|
||||
placeholder: MultitypeOverview.placeholder,
|
||||
|
|
@ -74,11 +75,11 @@ class _BookmarksState extends State<Bookmarks> {
|
|||
),
|
||||
],
|
||||
children: [
|
||||
SearchField(
|
||||
title: 'نشان شدهها',
|
||||
onChanged: _onChanged,
|
||||
focusNode: _focuseNode,
|
||||
),
|
||||
// SearchField(
|
||||
// title: 'نشان شدهها',
|
||||
// onChanged: _onChanged,
|
||||
// focusNode: _focuseNode,
|
||||
// ),
|
||||
const SizedBox(height: 16),
|
||||
AnimatedVisibility(
|
||||
duration: DesignConfig.lowAnimationDuration,
|
||||
|
|
@ -89,28 +90,35 @@ class _BookmarksState extends State<Bookmarks> {
|
|||
MenuOption(
|
||||
onTap: () => _onCategorySelected('radar'),
|
||||
title: 'تحلیلهای رادار',
|
||||
icon: DidvanIcons.radar_regular,
|
||||
icon: DidvanIcons.radar_solid,
|
||||
iconSize: 24,
|
||||
),
|
||||
const DidvanDivider(),
|
||||
MenuOption(
|
||||
onTap: () => _onCategorySelected('news'),
|
||||
title: 'اخبار',
|
||||
icon: DidvanIcons.news_regular,
|
||||
title: 'دنیای فولاد',
|
||||
icon: DidvanIcons.news_solid,
|
||||
iconSize: 24,
|
||||
),
|
||||
const DidvanDivider(),
|
||||
MenuOption(
|
||||
onTap: () => _onCategorySelected('radar'),
|
||||
title: 'پویش افق',
|
||||
icon: DidvanIcons.radar_solid,
|
||||
iconSize: 24,
|
||||
),
|
||||
const DidvanDivider(),
|
||||
MenuOption(
|
||||
onTap: () => _onCategorySelected('video'),
|
||||
title: 'ویدئوها',
|
||||
icon: DidvanIcons.video_regular,
|
||||
title: 'ویدئوکست',
|
||||
icon: DidvanIcons.video_solid,
|
||||
iconSize: 24,
|
||||
),
|
||||
const DidvanDivider(),
|
||||
MenuOption(
|
||||
onTap: () => _onCategorySelected('podcast'),
|
||||
title: 'پادکستها',
|
||||
icon: DidvanIcons.podcast_regular,
|
||||
icon: DidvanIcons.podcast_solid,
|
||||
iconSize: 24,
|
||||
),
|
||||
],
|
||||
|
|
@ -142,15 +150,15 @@ class _BookmarksState extends State<Bookmarks> {
|
|||
});
|
||||
}
|
||||
|
||||
void _onChanged(String value) {
|
||||
final state = context.read<BookmarksState>();
|
||||
if (value.length < 3 && value.isNotEmpty || state.lastSearch == value) {
|
||||
return;
|
||||
}
|
||||
_timer?.cancel();
|
||||
_timer = Timer(const Duration(seconds: 1), () {
|
||||
state.search = value;
|
||||
state.getBookmarks(page: 1);
|
||||
});
|
||||
}
|
||||
// void _onChanged(String value) {
|
||||
// final state = context.read<BookmarksState>();
|
||||
// if (value.length < 3 && value.isNotEmpty || state.lastSearch == value) {
|
||||
// return;
|
||||
// }
|
||||
// _timer?.cancel();
|
||||
// _timer = Timer(const Duration(seconds: 1), () {
|
||||
// state.search = value;
|
||||
// state.getBookmarks(page: 1);
|
||||
// });
|
||||
// }
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
import 'package:didvan/models/requests/studio.dart';
|
||||
import 'package:didvan/models/view/app_bar_data.dart';
|
||||
import 'package:didvan/views/profile/bookmarks/filtered_bookmark/filtered_bookmarks_state.dart';
|
||||
import 'package:didvan/views/home/bookmarks/filtered_bookmark/filtered_bookmarks_state.dart';
|
||||
import 'package:didvan/views/widgets/overview/news.dart';
|
||||
import 'package:didvan/views/widgets/overview/podcast.dart';
|
||||
import 'package:didvan/views/widgets/overview/radar.dart';
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
import 'package:flutter/material.dart';
|
||||
|
||||
class CategoriesPage extends StatelessWidget {
|
||||
const CategoriesPage({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,7 @@
|
|||
import 'package:didvan/config/design_config.dart';
|
||||
import 'package:didvan/services/app_initalizer.dart';
|
||||
import 'package:didvan/views/home/bookmarks/bookmarks.dart';
|
||||
import 'package:didvan/views/home/categories/categories_page.dart';
|
||||
import 'package:didvan/views/home/main/main_page.dart';
|
||||
import 'package:didvan/views/home/home_state.dart';
|
||||
import 'package:didvan/views/widgets/logo_app_bar.dart';
|
||||
|
|
@ -42,8 +44,8 @@ class _HomeState extends State<Home> with SingleTickerProviderStateMixin {
|
|||
children: const [
|
||||
MainPage(),
|
||||
Statistic(),
|
||||
SizedBox(),
|
||||
SizedBox(),
|
||||
CategoriesPage(),
|
||||
Bookmarks(),
|
||||
],
|
||||
),
|
||||
bottomNavigationBar: Consumer<HomeState>(
|
||||
|
|
|
|||
|
|
@ -55,7 +55,8 @@ class ProfilePage extends StatelessWidget {
|
|||
title: 'ویرایش پروفایل',
|
||||
icon: DidvanIcons.user_edit_regular,
|
||||
suffix: context.watch<UserProvider>().user.fullName,
|
||||
onTap: () => Navigator.of(context).pushNamed(Routes.profile),
|
||||
onTap: () =>
|
||||
Navigator.of(context).pushNamed(Routes.editProfile),
|
||||
),
|
||||
const DidvanDivider(),
|
||||
MenuOption(
|
||||
|
|
@ -122,7 +123,7 @@ class ProfilePage extends StatelessWidget {
|
|||
),
|
||||
const SizedBox(height: 16),
|
||||
DidvanText(
|
||||
'نسخه نرمافزار: 2.2.5',
|
||||
'نسخه نرمافزار: 3.0.0',
|
||||
style: Theme.of(context).textTheme.bodySmall,
|
||||
),
|
||||
],
|
||||
|
|
|
|||
|
|
@ -146,7 +146,7 @@ class _DidvanPageViewState extends State<DidvanPageView> {
|
|||
title: item.title,
|
||||
image: item.image,
|
||||
description: 'radar',
|
||||
type: '',
|
||||
type: 'radar',
|
||||
),
|
||||
),
|
||||
],
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@ class DidvanTextField extends StatefulWidget {
|
|||
final bool acceptSpace;
|
||||
final String? Function(String value)? validator;
|
||||
final TextInputType? textInputType;
|
||||
final bool disableBorders;
|
||||
final bool isSmall;
|
||||
const DidvanTextField({
|
||||
Key? key,
|
||||
this.onChanged,
|
||||
|
|
@ -34,6 +36,8 @@ class DidvanTextField extends StatefulWidget {
|
|||
this.autoFocus = false,
|
||||
this.onSubmitted,
|
||||
this.acceptSpace = true,
|
||||
this.disableBorders = false,
|
||||
this.isSmall = false,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
|
|
@ -79,7 +83,9 @@ class _DidvanTextFieldState extends State<DidvanTextField> {
|
|||
decoration: BoxDecoration(
|
||||
color: _fillColor(),
|
||||
borderRadius: DesignConfig.lowBorderRadius,
|
||||
border: Border.all(color: _borderColor()),
|
||||
border: widget.disableBorders
|
||||
? null
|
||||
: Border.all(color: _borderColor()),
|
||||
),
|
||||
child: TextFormField(
|
||||
inputFormatters: <TextInputFormatter>[
|
||||
|
|
@ -96,9 +102,9 @@ class _DidvanTextFieldState extends State<DidvanTextField> {
|
|||
onChanged: _onChanged,
|
||||
validator: _validator,
|
||||
obscuringCharacter: '*',
|
||||
style: Theme.of(context)
|
||||
.textTheme
|
||||
.bodyMedium!
|
||||
style: (widget.isSmall
|
||||
? Theme.of(context).textTheme.bodySmall!
|
||||
: Theme.of(context).textTheme.bodyMedium!)
|
||||
.copyWith(fontFamily: DesignConfig.fontFamily.padRight(3)),
|
||||
decoration: InputDecoration(
|
||||
suffixIcon: _suffixBuilder(),
|
||||
|
|
@ -106,18 +112,20 @@ class _DidvanTextFieldState extends State<DidvanTextField> {
|
|||
border: InputBorder.none,
|
||||
hintText: widget.hintText,
|
||||
errorStyle: const TextStyle(height: 0.01),
|
||||
hintStyle: Theme.of(context)
|
||||
.textTheme
|
||||
.bodyMedium!
|
||||
hintStyle: (widget.isSmall
|
||||
? Theme.of(context).textTheme.bodySmall!
|
||||
: Theme.of(context).textTheme.bodyMedium!)
|
||||
.copyWith(color: Theme.of(context).colorScheme.hint),
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
AnimatedVisibility(
|
||||
isVisible: _error != null,
|
||||
duration: DesignConfig.lowAnimationDuration,
|
||||
child: Row(
|
||||
child: Column(
|
||||
children: [
|
||||
const SizedBox(height: 8),
|
||||
Row(
|
||||
children: [
|
||||
Icon(
|
||||
DidvanIcons.lightbulb_exclamation_regular,
|
||||
|
|
@ -131,6 +139,8 @@ class _DidvanTextFieldState extends State<DidvanTextField> {
|
|||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
);
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import 'package:didvan/utils/date_time.dart';
|
|||
import 'package:didvan/views/podcasts/studio_details/studio_details_state.dart';
|
||||
import 'package:didvan/views/widgets/didvan/card.dart';
|
||||
import 'package:didvan/views/widgets/didvan/text.dart';
|
||||
import 'package:didvan/views/widgets/didvan/text_field.dart';
|
||||
import 'package:didvan/views/widgets/shimmer_placeholder.dart';
|
||||
import 'package:didvan/views/widgets/skeleton_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
|
@ -19,12 +20,14 @@ class MultitypeOverview extends StatelessWidget {
|
|||
final OverviewData item;
|
||||
final bool hasUnmarkConfirmation;
|
||||
final void Function(int id, bool value) onMarkChanged;
|
||||
final bool enableCaption;
|
||||
|
||||
const MultitypeOverview({
|
||||
Key? key,
|
||||
required this.item,
|
||||
required this.onMarkChanged,
|
||||
this.hasUnmarkConfirmation = false,
|
||||
this.enableCaption = false,
|
||||
}) : super(key: key);
|
||||
|
||||
get _targetPageArgs {
|
||||
|
|
@ -81,14 +84,17 @@ class MultitypeOverview extends StatelessWidget {
|
|||
},
|
||||
);
|
||||
},
|
||||
child: Row(
|
||||
child: Column(
|
||||
children: [
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Stack(
|
||||
children: [
|
||||
SkeletonImage(imageUrl: item.image, height: 80, width: 80),
|
||||
Container(
|
||||
padding: const EdgeInsets.symmetric(vertical: 4, horizontal: 8),
|
||||
padding:
|
||||
const EdgeInsets.symmetric(vertical: 4, horizontal: 8),
|
||||
decoration: BoxDecoration(
|
||||
color: Theme.of(context).colorScheme.secondary,
|
||||
borderRadius: const BorderRadius.horizontal(
|
||||
|
|
@ -152,6 +158,52 @@ class MultitypeOverview extends StatelessWidget {
|
|||
),
|
||||
],
|
||||
),
|
||||
if (enableCaption)
|
||||
Column(
|
||||
children: [
|
||||
const SizedBox(height: 8),
|
||||
Row(
|
||||
children: [
|
||||
Icon(
|
||||
Icons.edit_outlined,
|
||||
size: 16,
|
||||
color: Theme.of(context).colorScheme.caption,
|
||||
),
|
||||
const SizedBox(width: 4),
|
||||
DidvanText(
|
||||
'یادداشتهای من',
|
||||
style: Theme.of(context).textTheme.labelSmall,
|
||||
color: Theme.of(context).colorScheme.caption,
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Flexible(
|
||||
child: Container(
|
||||
height: 1,
|
||||
color: Theme.of(context).colorScheme.primary,
|
||||
),
|
||||
),
|
||||
Flexible(
|
||||
flex: 2,
|
||||
child: Container(
|
||||
height: 1,
|
||||
color: Theme.of(context).colorScheme.border,
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
DidvanTextField(
|
||||
disableBorders: true,
|
||||
hintText: 'برای اضافه کردن یادداشت لمس کنید.',
|
||||
onChanged: (value) {},
|
||||
isSmall: true,
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue