2

我在单击浮动操作按钮时创建了一个底部工作表,它执行两个功能。

1-底部工作表弹出。

2-如果单击时底部表格的表格有效,则将数据保存到数据库中。

我正在使用冻结的集团。是当我单击浮动操作按钮时,我给 bloc 真值,一旦我填写表格,单击浮动操作按钮将有效,表格将保存到数据库,并且 bloc 的值为 false。一旦在底部工作表打开且表单未验证时再次单击该按钮,底部工作表将重新重新打开“我需要解决此问题”。当底部工作表关闭时,我给出了 bloc 错误值。

肘状态:

abstract class HomeState with _$HomeState {
  const factory HomeState({
    required Note inputTextValue,
    required bool isClicked,
    required int radioValue
  }) = AddNewNoteClicked;
  factory HomeState.init() => HomeState(
        inputTextValue: Note(textInput: ''),
        isClicked: false,
        radioValue: 1,
      );
}

肘码是:

class HomeCubit extends Cubit<HomeState> {
  HomeCubit() : super(HomeState.init());
  void addNewNoteButton({required bool isClicked}) {
//! true && valid
if (isClicked == true && state.inputTextValue.input.isRight()) {
  //! make it false
  //! save to database
  _database();
  return emit(state.copyWith(isClicked: false));
} else if (isClicked == true && state.inputTextValue.input.isLeft()) {
  
} else {
  return emit(state.copyWith(isClicked: isClicked));
}

} }

底页代码是:

class HomePage extends StatelessWidget {
  const HomePage();
  @override
  Widget build(BuildContext context) {
    final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
    return BlocListener<HomeCubit, HomeState>(
      listener: (context, state) {
        if (state.isClicked) {
          _scaffoldKey.currentState!
              .showBottomSheet(
                (context) => const AddNewNoteBottomSheet(),
              )
              .closed
              .then((value) {
              context.read<HomeCubit>().addNewNoteButton(isClicked: false);
          });
        }
      },
      child: DefaultTabController(
        length: 3,
        child: Scaffold(
          key: _scaffoldKey,
          // add note float action button
          floatingActionButton: InkWell(
            onTap: () {
              context.read<HomeCubit>().addNewNoteButton(isClicked: true);
            },
            // for float action button
            // icon shape
            child: Container(
              // add note icon
              child: Icon(
                // state.showSaveIconState ? Icons.save :
                Icons.add,
                color: const Color(whiteColor),
                size: 9.h,
              ),
            ),
          ),
        ),
      ),
    );
  }
}
4

0 回答 0