import 'package:day_night_time_picker/lib/daynight_timepicker.dart'; import 'package:didvan/config/design_config.dart'; import 'package:didvan/constants/app_icons.dart'; import 'package:didvan/constants/assets.dart'; import 'package:didvan/models/view/app_bar_data.dart'; import 'package:didvan/pages/home/profile/settings/settings_state.dart'; import 'package:didvan/pages/home/profile/widgets/menu_item.dart'; import 'package:didvan/providers/theme_provider.dart'; import 'package:didvan/widgets/didvan/card.dart'; import 'package:didvan/widgets/didvan/divider.dart'; import 'package:didvan/widgets/didvan/scaffold.dart'; import 'package:didvan/widgets/didvan/text.dart'; import 'package:didvan/widgets/item_title.dart'; import 'package:didvan/widgets/state_handler.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:provider/provider.dart'; class Settings extends StatelessWidget { const Settings({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Consumer( builder: (context, state, child) => StateHandler( state: context.read(), builder: (context, state) => DidvanScaffold( appBarData: AppBarData(hasBack: true, title: 'تنظیمات'), slivers: [ DidvanCard( child: MenuItem( title: 'زمان دریافت اعلان', onTap: () => _pickTimeRange(context), icon: DidvanIcons.notification_regular, suffix: state.notificationTimeRange[0], ), ), const ItemTitle( title: 'انتخاب قلم', icon: DidvanIcons.font_solid, ), DidvanCard( child: Column( children: [ MenuItem( suffix: 'نیاز به پیاده‌سازی', title: 'فونت برنامه', onTap: () {}, ), const DidvanDivider(), MenuItem( suffix: 'نیاز به پیاده‌سازی', title: 'اندازه متن', onTap: () {}, ), ], ), ), const ItemTitle( title: 'ظاهر برنامه', icon: DidvanIcons.theme_solid, ), DidvanCard( child: Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ _themeItem(context, state, 'light'), _themeItem(context, state, 'dark'), ], ), ), ], ), ), ); } Future _pickTimeRange(context) async { final SettingsState state = context.read(); Navigator.of(context).push( showPicker( context: context, value: const TimeOfDay(hour: 0, minute: 0), onChange: (time) { String hour = time.toString().split(':')[0]; state.notificationTimeRange = []; }, ), ); } Widget _themeItem( BuildContext context, SettingsState state, String brightness) { final bool isDarkTheme = brightness == 'dark'; return GestureDetector( onTap: () { state.brightness = brightness; if (isDarkTheme && Theme.of(context).brightness == Brightness.dark) { return; } else if (!isDarkTheme && Theme.of(context).brightness == Brightness.light) { return; } else { if (isDarkTheme) { context.read().themeMode = ThemeMode.dark; DesignConfig.updateSystemUiOverlayStyle(); } else { context.read().themeMode = ThemeMode.light; DesignConfig.updateSystemUiOverlayStyle(); } } }, child: Column( children: [ SvgPicture.asset(isDarkTheme ? Assets.darkTheme : Assets.lightTheme), const SizedBox(height: 8), DidvanText( isDarkTheme ? 'تیره' : 'روشن', ), ], ), ); } }