释放存储时灰屏无误

Grey Screen when release to store without error

有一个浮动操作按钮,它会打开一个对话框。它在调试模式下工作正常,没有红色错误。但是我上传了 google 和应用程序商店,它显示灰色屏幕。然后我尝试使用 Flutter 运行 --release 在发布模式下 运行。它工作正常。我找不到任何错误或显示灰色屏幕的任何原因。

return Scaffold(
floatingActionButtonLocation: FloatingActionButtonLocation.endFloat,
floatingActionButton: floatButton(context, productsProvider),

);

Visibility floatButton(
      BuildContext context, ProductsProvider productsProvider) {
    return Visibility(
      visible: MediaQuery.of(context).viewInsets.bottom == 0.0,
      child: FloatingActionButton.extended(
        onPressed: () async {
          showDataAlert(context, productsProvider);
        },
        label: Text(
          'Fiyat Gir',
          style: TextStyle(
            color: Colors.white,
            fontSize: 14.sp,
          ),
        ),
      ),
    );
  }

我认为 showGeneralDialog 有一些东西可以停止在商店上工作。

showDataAlert(BuildContext context, ProductsProvider productsProvider) {
    showGeneralDialog(
      context: context,
      barrierLabel: "Label",
      barrierDismissible: true,
      barrierColor: Colors.black.withOpacity(0.5),
      transitionDuration: Duration(milliseconds: 500),
      transitionBuilder: (context, anim1, anim2, child) {
        return SlideTransition(
          position:
              Tween(begin: Offset(0, 1), end: Offset(0, 0)).animate(anim1),
          child: child,
        );
      },
      pageBuilder: (context, anim1, anim2) {
        return AlertDialog(
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.all(
              Radius.circular(
                20.r,
              ),
            ),
          ),
          contentPadding: EdgeInsets.only(
            top: 10.h,
          ),
          title: Text(
            "Fiyat Ekleme",
            style: TextStyle(fontSize: 12.sp),
          ),
          content: Container(
            constraints: BoxConstraints(minHeight: 150.h),
            //height: 400,
            child: Column(
              mainAxisAlignment: MainAxisAlignment.start,
              crossAxisAlignment: CrossAxisAlignment.start,
              mainAxisSize: MainAxisSize.min,
              children: <Widget>[
                Container(
                  height: 60.h,
                  padding: EdgeInsets.all(8.r),
                  child: TextFormField(
                    key: companyName,
                    validator: (value) =>
                        value!.isEmpty ? "Lütfen bu alanı doldurunuz." : null,
                    decoration: InputDecoration(
                        prefixIcon: Icon(
                          Icons.store,
                          color: Colors.black,
                          size: 16.r,
                        ),
                        // suffixIconConstraints: BoxConstraints(maxHeight: 1.h),
                        // suffixIcon: FaIcon(FontAwesomeIcons.starOfLife,
                        //     color: Colors.red[400], size: 10.r),
                        labelText: 'İşletme Adı',
                        hintStyle: TextStyle(fontSize: 12.sp)),
                  ),
                ),
                Container(
                  height: 60.h,
                  padding: EdgeInsets.all(8.r),
                  child: TextField(
                    keyboardType:
                        TextInputType.numberWithOptions(decimal: true),
                    focusNode: _nodeText1,
                    // key: keyprice,
                    controller: price,
                    // validator: (value) => value!.isEmpty
                    //     ? "Lütfen bu alanı doldurunuz."
                    //     : null,
                    decoration: InputDecoration(
                        prefixIcon: Icon(
                          Icons.money_rounded,
                          color: Colors.black,
                          size: 16.r,
                        ),
                        labelText: 'Ürün Fiyatı',
                        hintStyle: TextStyle(fontSize: 12.sp)),
                  ),
                ),
                Container(
                  width: double.infinity,
                  height: 60.h,
                  decoration:
                      BoxDecoration(borderRadius: BorderRadius.circular(20.r)),
                  padding: EdgeInsets.all(12.r),
                  child: ElevatedButton(
                    onPressed: () async {
                      if (companyName.currentState!.validate() == false ||
                          price.text.isEmpty) {
                        showToast('Lütfen mecburi alanları doldurunuz.',
                            context: context,
                            axis: Axis.horizontal,
                            alignment: Alignment.center,
                            duration: const Duration(seconds: 3),
                            backgroundColor: Colors.red[200],
                            position: StyledToastPosition.center);
                      } else {
                        buildShowDialogWithText(context, 'Fiyat Ekleniyor...');
                        productsProvider.marketPriceRequestModel.productName =
                            productsProvider.productTrackingResponseModel
                                    .productName.isEmpty
                                ? productName.currentState!.value
                                : productsProvider
                                    .productTrackingResponseModel.productName;
                        productsProvider.marketPriceRequestModel.businessName =
                            companyName.currentState!.value;
                        productsProvider.marketPriceRequestModel.price =
                            double.parse(
                                price.text.replaceFirst(RegExp(','), '.'));
                        productsProvider.marketPriceRequestModel.barcode =
                            productsProvider.barcode;
                        productsProvider.marketPriceRequestModel.productImage =
                            image != null
                                ? 'a,' +
                                    base64Encode(
                                        File(image!.path).readAsBytesSync())
                                : null;
                        await addPrice(productsProvider.barcode);
                        if (productsProvider.added) {
                          await productsProvider.getProductForPriceTracking(
                              productsProvider.barcode);
                          showToast('Ürün bilgisi eklendi.',
                              context: context,
                              axis: Axis.horizontal,
                              alignment: Alignment.center,
                              duration: const Duration(seconds: 3),
                              backgroundColor: Colors.green[200],
                              position: StyledToastPosition.center);
                          // Navigator.of(context).pushAndRemoveUntil(
                          //     CupertinoPageRoute(
                          //         builder: (context) => const BarcodeScanner()),
                          //     (_) => false);

                          Navigator.pop(context, buildShowDialog);
                          Navigator.of(context).pop();
                        } else {
                          showToast('Ürün bilgisi eklenemedi.',
                              context: context,
                              axis: Axis.horizontal,
                              alignment: Alignment.center,
                              duration: const Duration(seconds: 3),
                              backgroundColor: Colors.red[200],
                              position: StyledToastPosition.center);
                          Navigator.pop(context, buildShowDialog);
                        }
                      }
                    },
                    style: ElevatedButton.styleFrom(
                      primary: Colors.green,
                      // fixedSize: Size(250, 50),
                    ),
                    child: Text(
                      "Kaydet",
                    ),
                  ),
                ),
              ],
            ),
          ),
        );
      },
    );
  }

在调试菜单中标记这两个选项,您会在 device/emulator 上看到一个红色屏幕,这就是问题所在。尝试解决问题。

如果这不起作用,请尝试通过 运行 执行以下命令 运行 应用程序处于发布模式:

flutter run --release -v 并在 VS 代码中的终端中查看结果