import 'package:bloc_tutorial/presentation/screens/third_screen.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../logic/cubit/counter_cubit.dart'; import '../../logic/cubit/counter_state.dart'; import '../../logic/cubit/settings_cubit.dart'; class SettingsScreen extends StatefulWidget { static const String kSettingsScreen = '/settings_screen'; final String title; final Color backgroundColor; const SettingsScreen( {super.key, required this.title, required this.backgroundColor}); @override State createState() => _SettingsScreenState(); } class _SettingsScreenState extends State { @override Widget build(BuildContext context) => _buildScaffold(); Widget _buildScaffold() => BlocListener( listener: (context, state) { if(state is SettingsLoaded ){ if(state.appNotifications && !state.emailNotifications){ ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('App Notifications Enabled, Email Notifications Disabled'), ),); }else if (!state.appNotifications && state.emailNotifications){ ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('App Notifications Disabled, Email Notifications Enabled'), ),); }else if( state.emailNotifications && state.appNotifications){ ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('App Notifications and Email Notifications are Enabled'), ),); }else if(!state.appNotifications && !state.emailNotifications){ ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('App Notifications and Email Notifications Disabled'), ),); } } }, child: Scaffold( appBar: _buildAppBar(), body: _buildBody(), ), ); PreferredSizeWidget _buildAppBar() => AppBar( title: Text( widget.title, style: TextStyle(color: Colors.white), ), backgroundColor: widget.backgroundColor, iconTheme: IconThemeData(color: Colors.white), ); Widget _buildBody() => BlocBuilder( builder: (context, state) { if (state is SettingsLoaded) { return Column( mainAxisAlignment: MainAxisAlignment.start, children: _buildBodyChildren(state), ); } return Center(child: CircularProgressIndicator()); }, ); List _buildBodyChildren(SettingsLoaded state) => [_buildAppNotification(state), _buildEmailNotification(state)]; Widget _buildEmailNotification(SettingsLoaded state) => SwitchListTile( value: state.emailNotifications, title: Text('Email Notifications'), onChanged: (value) => context.read().toggleEmailNotifications(value)); Widget _buildAppNotification(SettingsLoaded state) => SwitchListTile( value: state.appNotifications, title: Text('App Notifications'), onChanged: (value) => context.read().toggleAppNotifications(value)); }