import 'bloc/recipe_create_bloc.dart'; import 'models/recipe_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 RecipeCreateScreen extends StatelessWidget { const RecipeCreateScreen({Key? key}) : super(key: key); static Widget builder(BuildContext context) { final recipeID = ModalRoute.of(context)!.settings.arguments; return BlocProvider( create: (context) => RecipeCreateBloc(RecipeCreateState( recipeModelObj: RecipeCreateModel(recipeID: recipeID.toString()))) ..add(RecipeCreateInitialEvent()), child: RecipeCreateScreen()); } Widget build(BuildContext context) { return BlocBuilder( builder: (context, state) { if (state is RecipeCreateInitialState) { // Это начальное состояние, данные ещё не загружены. return Container( color: Colors.white, ); } else if (state is RecipeCreateLoadedState) { // Данные загружены, можно строить экран. return _buildRecipeCreate(context, state); } else if (state is RecipeCreateErrorState) { // Произошла ошибка при загрузке данных. return Center(child: Text(state.errorMessage)); } else { // Другие состояния, если они есть. return Container(); // Пустой контейнер для необработанных состояний. } }, ); } _buildRecipeCreate(BuildContext context, RecipeCreateLoadedState 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.video_url, decoration: InputDecoration(labelText: 'Ссылка'), ), SizedBox(height: 16.0), // Здесь нужно добавить виджет для загрузки картинки ElevatedButton( onPressed: () => context.read().add(CreateRecipe()), child: Text('Создать'), ) ]), ) ]), ), ), bottomNavigationBar: _buildBottomBar(context)); } } _buildBottomBar(BuildContext context) { return CustomBottomBar(onChanged: (BottomBarEnum type) {}); }