firebase 将字符串列表从第一页传递到第二页

cvxl0en2  于 2023-02-09  发布在  其他
关注(0)|答案(1)|浏览(125)

我如何在另一个页面中传递字符串列表(包含存储在我的firestore中的URL字符串)?下面是我的MaterialPageRoute,我正在使用它来传递其他数据,而不是仅为String数据类型的字符串列表。

Navigator.pushReplacement(
                              context,
                              MaterialPageRoute(
// * I am passing it to MerchantEditProduct page
                                  builder: (context) => MerchantEditProduct(
                                          latestprod: ProductModel(
                                        couponNameCtrlr:
                                            getProductDetails.couponNameCtrlr,
                                        couponTypeCtrlr:
                                            getProductDetails.couponTypeCtrlr,
                                        couponDescCtrlr:
                                            getProductDetails.couponDescCtrlr,
                                        couponSalePriceCtrlr: getProductDetails
                                            .couponSalePriceCtrlr,
                                        couponUniqueId:
                                            getProductDetails.couponUniqueId,
                                        couponCategoryCtrlr: getProductDetails
                                            .couponCategoryCtrlr,
                                        couponOrigPriceCtrlr: getProductDetails
                                            .couponOrigPriceCtrlr,
                                        couponQuantityCtrlr: getProductDetails
                                            .couponQuantityCtrlr,
                                        couponDateFromCtrlr: getProductDetails
                                            .couponDateFromCtrlr,
                                        couponDateToCtrlr:
                                            getProductDetails.couponDateToCtrlr,
// * couponFeaturedImage is a List<dynamic>, but do contains a list of strings(url).
                                        couponFeaturedImage: getProductDetails
                                            .couponFeaturedImage,
// * couponMultipleImagesCtrlr is a List<dynamic>, but do contains a list of strings(url).
                                        couponMultipleImagesCtrlr:
                                            getProductDetails
                                                .couponMultipleImagesCtrlr,
                                      ))));

我确实传递了它并将其存储在第二页的initState中

TextEditingController? couponNameCtrlr;
  TextEditingController? couponDescCtrlr;
  TextEditingController? couponSalePriceCtrlr;
  TextEditingController? couponTypeCtrlr;
  TextEditingController? couponCategoryCtrlr;
  TextEditingController? couponOrigPriceCtrlr;
  TextEditingController? couponQuantityCtrlr;
  TextEditingController? couponDateFromCtrlr;
  TextEditingController? couponDateToCtrlr;
  TextEditingController? couponMultipleImagesCtrlr;
  TextEditingController? couponUniqueId;
  List? couponFeaturedImage;

void initState() {
    couponNameCtrlr =
        TextEditingController(text: widget.latestprod.couponNameCtrlr);
    couponDescCtrlr =
        TextEditingController(text: widget.latestprod.couponDescCtrlr);
    couponSalePriceCtrlr =
        TextEditingController(text: widget.latestprod.couponSalePriceCtrlr);
    couponTypeCtrlr =
        TextEditingController(text: widget.latestprod.couponTypeCtrlr);
    couponCategoryCtrlr =
        TextEditingController(text: widget.latestprod.couponCategoryCtrlr);
    couponOrigPriceCtrlr =
        TextEditingController(text: widget.latestprod.couponOrigPriceCtrlr);
    couponQuantityCtrlr =
        TextEditingController(text: widget.latestprod.couponQuantityCtrlr);
    couponDateFromCtrlr =
        TextEditingController(text: widget.latestprod.couponDateFromCtrlr);
    couponDateToCtrlr =
        TextEditingController(text: widget.latestprod.couponDateToCtrlr);
    couponUniqueId =
        TextEditingController(text: widget.latestprod.couponUniqueId);
    couponSalePriceCtrlr =
        TextEditingController(text: widget.latestprod.couponSalePriceCtrlr);
    couponFeaturedImage = widget.couponFeaturedImage;
    super.initState();
  }

我在这里尝试和搜索的解决方案是,我通过StatefulWidget使用它下面的所需...

final ProductModel latestprod;
  final List? couponFeaturedImage;
  const MerchantEditProduct(
      {Key? key, required this.latestprod, this.couponFeaturedImage})
      : super(key: key);

然而,我仍然不能找回它,我将感谢任何帮助或想法就如何解决这一个。

guz6ccqo

guz6ccqo1#

我通过将couponFeaturedImage存储在String变量中并在initState中使用setState修复了此问题。
注意:我不知道这是否是推荐的修复,任何改进的想法都是欢迎和赞赏的!谢谢!

void initState() {
    couponNameCtrlr =
        TextEditingController(text: widget.latestprod.couponNameCtrlr);
    couponDescCtrlr =
        TextEditingController(text: widget.latestprod.couponDescCtrlr);
    couponSalePriceCtrlr =
        TextEditingController(text: widget.latestprod.couponSalePriceCtrlr);
    couponTypeCtrlr =
        TextEditingController(text: widget.latestprod.couponTypeCtrlr);
    couponCategoryCtrlr =
        TextEditingController(text: widget.latestprod.couponCategoryCtrlr);
    couponOrigPriceCtrlr =
        TextEditingController(text: widget.latestprod.couponOrigPriceCtrlr);
    couponQuantityCtrlr =
        TextEditingController(text: widget.latestprod.couponQuantityCtrlr);
    couponDateFromCtrlr =
        TextEditingController(text: widget.latestprod.couponDateFromCtrlr);
    couponDateToCtrlr =
        TextEditingController(text: widget.latestprod.couponDateToCtrlr);
    couponUniqueId =
        TextEditingController(text: widget.latestprod.couponUniqueId);
    couponSalePriceCtrlr =
        TextEditingController(text: widget.latestprod.couponSalePriceCtrlr);
    couponFeaturedImage = widget.couponFeaturedImage;
    super.initState();
// here and now I can access imageURL and display it as Image!
setState(() {
      imageURL = couponFeaturedImages!.first;
    });
  }

相关问题