diff --git a/lib/presentation/chat/chat_select_screen/bloc/chat_select_bloc.dart b/lib/presentation/chat/chat_select_screen/bloc/chat_select_bloc.dart index e69de29b..1fbde95f 100644 --- a/lib/presentation/chat/chat_select_screen/bloc/chat_select_bloc.dart +++ b/lib/presentation/chat/chat_select_screen/bloc/chat_select_bloc.dart @@ -0,0 +1,21 @@ +import 'package:equatable/equatable.dart'; +import 'package:flutter/material.dart'; +import '/core/app_export.dart'; +import 'package:eatvio_app/presentation/chat/chat_select_screen/models/chat_select_model.dart'; +part 'chat_select_event.dart'; +part 'chat_select_state.dart'; + +/// A bloc that manages the state of a ChatSelect according to the event that is dispatched to it. +class ChatSelectBloc extends Bloc { + ChatSelectBloc(ChatSelectState initialState) : super(initialState) { + on(_onInitialize); + } + + _onInitialize( + ChatSelectInitialEvent event, + Emitter emit, + ) async { + emit(state.copyWith( + chatSelectModelObj: state.chatSelectModelObj?.copyWith())); + } +} diff --git a/lib/presentation/chat/chat_select_screen/bloc/chat_select_event.dart b/lib/presentation/chat/chat_select_screen/bloc/chat_select_event.dart index e69de29b..681736b1 100644 --- a/lib/presentation/chat/chat_select_screen/bloc/chat_select_event.dart +++ b/lib/presentation/chat/chat_select_screen/bloc/chat_select_event.dart @@ -0,0 +1,28 @@ +// ignore_for_file: must_be_immutable + +part of 'chat_select_bloc.dart'; + +/// Abstract class for all events that can be dispatched from the +///ChatSelect widget. +/// +/// Events must be immutable and implement the [Equatable] interface. +@immutable +abstract class ChatSelectEvent extends Equatable {} + +/// Event that is dispatched when the ChatSelect widget is first created. +class ChatSelectInitialEvent extends ChatSelectEvent { + @override + List get props => []; +} + +///event for dropdown selection +class ChangeDropDownEvent extends ChatSelectEvent { + ChangeDropDownEvent({required this.value}); + + SelectionPopupModel value; + + @override + List get props => [ + value, + ]; +} diff --git a/lib/presentation/chat/chat_select_screen/bloc/chat_select_state.dart b/lib/presentation/chat/chat_select_screen/bloc/chat_select_state.dart index e69de29b..7f56519e 100644 --- a/lib/presentation/chat/chat_select_screen/bloc/chat_select_state.dart +++ b/lib/presentation/chat/chat_select_screen/bloc/chat_select_state.dart @@ -0,0 +1,31 @@ +// ignore_for_file: must_be_immutable + +part of 'chat_select_bloc.dart'; + +/// Represents the state of ChatSelect in the application. +class ChatSelectState extends Equatable { + ChatSelectState({ + this.selectedDropDownValue, + this.chatSelectModelObj, + }); + + SelectionPopupModel? selectedDropDownValue; + + ChatSelectModel? chatSelectModelObj; + + @override + List get props => [ + selectedDropDownValue, + chatSelectModelObj, + ]; + ChatSelectState copyWith({ + SelectionPopupModel? selectedDropDownValue, + ChatSelectModel? chatSelectModelObj, + }) { + return ChatSelectState( + selectedDropDownValue: + selectedDropDownValue ?? this.selectedDropDownValue, + chatSelectModelObj: chatSelectModelObj ?? this.chatSelectModelObj, + ); + } +} diff --git a/lib/presentation/chat/chat_select_screen/chat_select_screen.dart b/lib/presentation/chat/chat_select_screen/chat_select_screen.dart index e69de29b..1959b70c 100644 --- a/lib/presentation/chat/chat_select_screen/chat_select_screen.dart +++ b/lib/presentation/chat/chat_select_screen/chat_select_screen.dart @@ -0,0 +1,21 @@ +import 'bloc/chat_select_bloc.dart'; +import 'models/chat_select_model.dart'; +import 'package:eatvio_app/core/app_export.dart'; +import 'package:flutter/material.dart'; + +class ChatSelectScreen extends StatelessWidget { + const ChatSelectScreen({Key? key}) : super(key: key); + static Widget builder(BuildContext context) { + return BlocProvider( + create: (context) => ChatSelectBloc( + ChatSelectState(chatSelectModelObj: ChatSelectModel())) + ..add(ChatSelectInitialEvent()), + child: ChatSelectScreen()); + } + + @override + Widget build(BuildContext context) { + mediaQueryData = MediaQuery.of(context); + return Container(); + } +} diff --git a/lib/presentation/chat/chat_select_screen/models/chat_select_model.dart b/lib/presentation/chat/chat_select_screen/models/chat_select_model.dart index e69de29b..e77aa4fe 100644 --- a/lib/presentation/chat/chat_select_screen/models/chat_select_model.dart +++ b/lib/presentation/chat/chat_select_screen/models/chat_select_model.dart @@ -0,0 +1,16 @@ +// ignore_for_file: must_be_immutable + +import 'package:equatable/equatable.dart'; + +/// This class defines the variables used in the [chat_select_screen], +/// and is typically used to hold data that is passed between different parts of the application. +class ChatSelectModel extends Equatable { + ChatSelectModel(); + + ChatSelectModel copyWith() { + return ChatSelectModel(); + } + + @override + List get props => []; +}