簡體   English   中英

Flutter web 調整大小觸發 bloc 事件?

[英]Flutter web resizing triggering bloc event?

每當我調整我的 chrome 瀏覽器大小時,它都會發出一個事件來向我的專欄添加一個新的“變體”,我不知道它可能會觸發它。 我知道它會觸發 on add variant 事件,但我不知道為什么它會在調整大小時或放大或縮小時觸發。

建設者

                        BlocBuilder<VariantBloc, VariantState>(
                          builder: (context, state) {

                            if(state is AddedVariantState){
                              variants++;
                            }else if (state is DeletedVariantState){
                              variants--;
                              usecase.multipleUsecase.removeAt(state.index);
                            }

                            return Align( 
                              alignment: Alignment.centerLeft,
                              child: ListView.builder(
                              shrinkWrap: true,
                              itemCount: variants,
                              itemBuilder: (context, index) {
                                usecase.multipleUsecase.add(MultipleAddServiceUsecase(index: index));
                                return VariantTextfield(
                                  usecase: usecase.multipleUsecase[index],
                                  index: index,
                                );
                              },
                              ),
                            );
                               
                          },
                        ),

觸發事件的按鈕

class MarketplaceAddProductVariantButton extends StatelessWidget {
  const MarketplaceAddProductVariantButton({
    Key? key,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {    
    return Align(
      alignment: Alignment.centerLeft,
      child: NeumorphicButton(
        onPressed: () {
          context
                .read<VariantBloc>()
                .add(OnAddVariantEvent());
        },
        margin:
            EdgeInsets.only(left: ScreenUtils.percentWidth(context, .5)),
        style: marketplaceButtonsNeuStyle.copyWith(
            boxShape:
                NeumorphicBoxShape.roundRect(BorderRadius.circular(17))),
        child: Container(
            alignment: Alignment.center,
            height: ScreenUtils.percentHeight(context, 4.5),
            width: ScreenUtils.percentWidth(context, 12),
            child: AutoSizeText(
              'Agregar otro',
              textAlign: TextAlign.center,
              style: _textStyle(),
            )),
      ),
    );
  }

剛剛發出事件的集團。

VariantBloc() : super(VariantInitial()) {
    on<OnAddVariantEvent>((event, emit) {
      emit(AddedVariantState(());
    });

在調整大小之前。 在此處輸入圖像描述

后。 在此處輸入圖像描述

實際上,它並沒有觸發新事件。 當您調整 window 的大小時, build function 將被調用,因此BlocBuilder將被重建,如果最后發出的 state 是AddedVariantState則此條件if(state is AddedVariantState)將為並且variants變量將增加。 如果最后發出的 state 是DeletedVariantState ,則會發生相反的行為。 這就是為什么您應該將variants變量放在VariantState class 中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM