forked from eatvio/eatvio_app
feat(diary) Added controllers and improved form build logic
This commit is contained in:
@@ -41,14 +41,16 @@ class DiaryEditBloc extends Bloc<DiaryEditEvent, DiaryEditState> {
|
||||
// Если текущее состояние уже загружено, обновляем его
|
||||
var currentState = state as DiaryEditLoadedState;
|
||||
// Обновляем значения контроллеров только если они уже были созданы
|
||||
print(currentState.wakeupController);
|
||||
emit((currentState).copyWith(
|
||||
wakeupExpanded: currentState.wakeupExpanded,
|
||||
moodExpanded: currentState.moodExpanded,
|
||||
wakeupController: currentState.wakeupController,
|
||||
retireController: currentState.retireController,
|
||||
commentController: currentState.commentController,
|
||||
));
|
||||
wakeupExpanded: currentState.wakeupExpanded,
|
||||
moodExpanded: currentState.moodExpanded,
|
||||
wakeupController: currentState.wakeupController,
|
||||
retireController: currentState.retireController,
|
||||
commentController: currentState.commentController,
|
||||
mealTimeController: currentState.mealTimeController,
|
||||
mealNameController: currentState.mealNameController,
|
||||
productNameController: currentState.productNameController,
|
||||
productQuantityController: currentState.productQuantityController));
|
||||
} else {
|
||||
// Если текущее состояние - начальное, создаем новое загруженное состояние
|
||||
emit(DiaryEditLoadedState(
|
||||
@@ -56,7 +58,11 @@ class DiaryEditBloc extends Bloc<DiaryEditEvent, DiaryEditState> {
|
||||
moodExpanded: true,
|
||||
wakeupController: TimeOfDay.now(),
|
||||
retireController: TimeOfDay.now(),
|
||||
mealTimeController: TimeOfDay.now(),
|
||||
mealNameController: TextEditingController(),
|
||||
commentController: TextEditingController(),
|
||||
productNameController: TextEditingController(),
|
||||
productQuantityController: TextEditingController(),
|
||||
));
|
||||
}
|
||||
/*} else {
|
||||
|
||||
@@ -23,6 +23,10 @@ class DiaryEditLoadedState extends DiaryEditState {
|
||||
this.wakeupController,
|
||||
this.retireController,
|
||||
this.commentController,
|
||||
this.mealTimeController,
|
||||
this.mealNameController,
|
||||
this.productNameController,
|
||||
this.productQuantityController,
|
||||
required this.wakeupExpanded,
|
||||
required this.moodExpanded})
|
||||
: super(diaryEditModelObj: null);
|
||||
@@ -30,7 +34,11 @@ class DiaryEditLoadedState extends DiaryEditState {
|
||||
DiaryEditModel? diaryEditModelObj;
|
||||
TimeOfDay? wakeupController;
|
||||
TimeOfDay? retireController;
|
||||
TimeOfDay? mealTimeController;
|
||||
TextEditingController? mealNameController;
|
||||
TextEditingController? commentController;
|
||||
TextEditingController? productNameController;
|
||||
TextEditingController? productQuantityController;
|
||||
bool wakeupExpanded;
|
||||
bool moodExpanded;
|
||||
@override
|
||||
@@ -40,7 +48,11 @@ class DiaryEditLoadedState extends DiaryEditState {
|
||||
DiaryEditModel? diaryEditModelObj,
|
||||
TimeOfDay? wakeupController,
|
||||
TimeOfDay? retireController,
|
||||
TimeOfDay? mealTimeController,
|
||||
TextEditingController? mealNameController,
|
||||
TextEditingController? commentController,
|
||||
TextEditingController? productNameController,
|
||||
TextEditingController? productQuantityController,
|
||||
required bool wakeupExpanded,
|
||||
required bool moodExpanded,
|
||||
}) {
|
||||
@@ -48,7 +60,13 @@ class DiaryEditLoadedState extends DiaryEditState {
|
||||
diaryEditModelObj: diaryEditModelObj ?? this.diaryEditModelObj,
|
||||
wakeupController: wakeupController ?? this.wakeupController,
|
||||
retireController: retireController ?? this.retireController,
|
||||
mealTimeController: mealTimeController ?? this.mealTimeController,
|
||||
mealNameController: mealNameController ?? this.mealNameController,
|
||||
commentController: commentController ?? this.commentController,
|
||||
productNameController:
|
||||
productNameController ?? this.productNameController,
|
||||
productQuantityController:
|
||||
productQuantityController ?? this.productQuantityController,
|
||||
wakeupExpanded: wakeupExpanded,
|
||||
moodExpanded: moodExpanded);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import 'bloc/diary_edit_bloc.dart';
|
||||
import 'models/diary_edit_model.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_form_builder/flutter_form_builder.dart';
|
||||
import 'package:eatvio_app/core/app_export.dart';
|
||||
import 'package:eatvio_app/widgets/custom_edit_text_form_field.dart';
|
||||
import 'package:eatvio_app/widgets/custom_edit_drop_down.dart';
|
||||
@@ -74,7 +76,8 @@ class DiaryEditScreen extends StatelessWidget {
|
||||
Widget _buildDiaryEditScreen(
|
||||
BuildContext context, DiaryEditLoadedState state) {
|
||||
mediaQueryData = MediaQuery.of(context);
|
||||
return SafeArea(
|
||||
return FormBuilder(
|
||||
child: SafeArea(
|
||||
child: Scaffold(
|
||||
backgroundColor: Color.fromARGB(255, 240, 242, 245),
|
||||
resizeToAvoidBottomInset: true,
|
||||
@@ -110,7 +113,7 @@ class DiaryEditScreen extends StatelessWidget {
|
||||
),
|
||||
bottomNavigationBar: _buildEndDay(context),
|
||||
),
|
||||
);
|
||||
));
|
||||
}
|
||||
|
||||
/// Section Widget
|
||||
@@ -193,6 +196,7 @@ class DiaryEditScreen extends StatelessWidget {
|
||||
}
|
||||
|
||||
_buildMeal(BuildContext context, DiaryEditLoadedState state) {
|
||||
final digitsOnly = FilteringTextInputFormatter.digitsOnly;
|
||||
return Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16.h),
|
||||
child: Container(
|
||||
@@ -230,8 +234,10 @@ class DiaryEditScreen extends StatelessWidget {
|
||||
constraints: BoxConstraints(
|
||||
maxWidth: MediaQuery.of(context).size.width - 247,
|
||||
),
|
||||
child: CustomTextFormField(
|
||||
hintText: "14:52",
|
||||
child: FormBuilderDateTimePicker(
|
||||
name: 'mealTime',
|
||||
inputType: InputType.time,
|
||||
decoration: InputDecoration(),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -256,6 +262,7 @@ class DiaryEditScreen extends StatelessWidget {
|
||||
padding: EdgeInsets.symmetric(horizontal: 10.h),
|
||||
child: CustomTextFormField(
|
||||
hintText: "Введите названия продукта",
|
||||
controller: state.productNameController,
|
||||
),
|
||||
),
|
||||
SizedBox(height: 20.v),
|
||||
@@ -268,6 +275,9 @@ class DiaryEditScreen extends StatelessWidget {
|
||||
width: 146.h,
|
||||
hintText: "Кол-во",
|
||||
textInputAction: TextInputAction.done,
|
||||
controller: state.productQuantityController,
|
||||
keyboardType: TextInputType.number,
|
||||
inputFormatters: <TextInputFormatter>[digitsOnly],
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(right: 30.h),
|
||||
|
||||
@@ -23,6 +23,7 @@ dependencies:
|
||||
flutter_spinkit: ^5.0.0
|
||||
flutter_dotenv: ^5.1.0
|
||||
carousel_slider: ^4.2.1
|
||||
flutter_form_builder: ^9.2.1
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
||||
Reference in New Issue
Block a user