import 'package:go_router/go_router.dart'; import 'bloc/chat_bloc.dart'; import 'models/chat_model.dart'; import 'package:eatvio_app/core/app_export.dart'; import 'package:flutter/material.dart'; import 'package:eatvio_app/widgets/app_bar/custom_app_bar.dart'; import 'package:eatvio_app/widgets/app_bar/appbar_subtitle.dart'; import 'package:eatvio_app/widgets/app_bar/appbar_leading_image.dart'; class ChatScreen extends StatelessWidget { const ChatScreen({Key? key}) : super(key: key); static Widget builder(BuildContext context, chatID) { return BlocProvider( create: (context) => ChatBloc( ChatState(chatModelObj: ChatModel(chatID: chatID.toString()))) ..add(ChatInitialEvent()), child: ChatScreen()); } Widget build(BuildContext context) { return BlocBuilder( builder: (context, state) { if (state is ChatInitialState) { return Scaffold( body: Center(child: CircularProgressIndicator(),), ); } else if (state is ChatLoadedState) { // Данные загружены, можно строить экран. return _buildChat(context, state); } else if (state is ChatErrorState) { // Произошла ошибка при загрузке данных. return Center(child: Text(state.errorMessage)); } else { return Scaffold( body: Center(child: CircularProgressIndicator(),), ); } }, ); } _buildChat(BuildContext context, ChatLoadedState state) { mediaQueryData = MediaQuery.of(context); return Scaffold( resizeToAvoidBottomInset: false, appBar: _buildAppbar(context), body: SizedBox( width: double.maxFinite, child: Container( width: double.maxFinite, decoration: AppDecoration.fillGray, child: ListView( children: [ SizedBox(height: 30.v), ], ), ), ), ); } /// Section Widget _buildAppbar(BuildContext context) { return CustomAppBar( leadingWidth: 26.h, leading: AppbarLeadingImage( imagePath: ImageConstant.imgArrowLeft, margin: EdgeInsets.only( left: 16.h, top: 18.v, bottom: 25.v, ), onTap: () => onTapArrowleftone(context), ), title: Padding( padding: EdgeInsets.only(left: 12.h), child: Row( children: [ Padding( padding: EdgeInsets.only( left: 12.h, top: 2.v, ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppbarSubtitle( text: "Валерий Леонтьев", ), SizedBox(height: 3.v), Text("Был в сети вчера", style: theme.textTheme.bodySmall!) ], ), ) ], ), ), ); } /// Navigates to the previous screen. onTapArrowleftone(BuildContext context) { GoRouter.of(context).pop(); } }