import 'bloc/blog_post_create_bloc.dart'; import 'models/blog_post_create_model.dart'; import 'package:eatvio_app/core/app_export.dart'; import 'package:flutter/material.dart'; import 'package:eatvio_app/widgets/custom_bottom_bar.dart'; class BlogPostCreateScreen extends StatelessWidget { const BlogPostCreateScreen({Key? key}) : super(key: key); static Widget builder(BuildContext context) { final blog_postID = ModalRoute.of(context)!.settings.arguments; return BlocProvider( create: (context) => BlogPostCreateBloc(BlogPostCreateState( blog_postModelObj: BlogPostCreateModel(blog_postID: blog_postID.toString()))) ..add(BlogPostCreateInitialEvent()), child: BlogPostCreateScreen()); } Widget build(BuildContext context) { return BlocBuilder( builder: (context, state) { if (state is BlogPostCreateInitialState) { // Это начальное состояние, данные ещё не загружены. return Container( color: Colors.white, ); } else if (state is BlogPostCreateLoadedState) { // Данные загружены, можно строить экран. return _buildBlogPostCreate(context, state); } else if (state is BlogPostCreateErrorState) { // Произошла ошибка при загрузке данных. return Center(child: Text(state.errorMessage)); } else { // Другие состояния, если они есть. return Container(); // Пустой контейнер для необработанных состояний. } }, ); } _buildBlogPostCreate(BuildContext context, BlogPostCreateLoadedState state) { mediaQueryData = MediaQuery.of(context); return Scaffold( resizeToAvoidBottomInset: false, body: SafeArea( child: Container( width: double.maxFinite, decoration: AppDecoration.fillGray, child: ListView(children: [ Container( margin: EdgeInsets.only( left: 16.h, right: 20.h, bottom: 10.h, ), padding: EdgeInsets.all(12.h), decoration: BoxDecoration( color: Colors.white, borderRadius: const BorderRadius.all(Radius.circular(12)), boxShadow: [ BoxShadow( color: Colors.grey.withOpacity(0.5), spreadRadius: 2, blurRadius: 5, offset: Offset(0, 3), ), ], ), child: Column(mainAxisSize: MainAxisSize.min, children: [ SizedBox(height: 16.0), TextFormField( controller: state.title, decoration: InputDecoration(labelText: 'Заголовок'), ), SizedBox(height: 16.0), TextFormField( controller: state.description, decoration: InputDecoration(labelText: 'Описание'), ), SizedBox(height: 16.0), TextFormField( controller: state.youtube_url, decoration: InputDecoration(labelText: 'Ссылка'), ), SizedBox(height: 16.0), // Здесь нужно добавить виджет для загрузки картинки ElevatedButton( onPressed: () => context .read() .add(CreateBlogPost()), child: Text('Создать'), ) ]), ) ]), ), ), bottomNavigationBar: _buildBottomBar(context)); } } _buildBottomBar(BuildContext context) { return CustomBottomBar(onChanged: (BottomBarEnum type) {}); }