首页 > 解决方案 > 颤振三元运算符未按预期工作

问题描述

更新:我在模拟器上工作,发现结果显示,第二次我打开选项卡,但第一次,它是空的。

我正在尝试通过在 TabBar 中使用三元运算符来运行特定功能,但是,它对“家禽”工作正常,而在其他两种情况下工作不正常,有人可以帮我解决我在这里做错了什么吗?

我已经被困在这里很长一段时间了。我正在使用三元运算符进行三级检查,这可能是个问题吗?我尝试使用 if-else,但这并没有将leadSubType 作为一个值,它已经在类中声明了。

TabBarView(
          children: [
            Container(
              child: FutureBuilder(
                future: getLeadPersonalDetails(),
                builder: (BuildContext context, AsyncSnapshot snapshot) {
                  late var leadData =
                      (snapshot.data as List<LeadModel>).toList();
                  switch (snapshot.connectionState) {
                    case ConnectionState.none:
                      return new Text('Loading...');
                    case ConnectionState.waiting:
                      return new Center(
                        child: Text("Loading Data.."),
                      );
                    default:
                      if (snapshot.hasError) {
                        return Text("Error : ${snapshot.error}");
                      } else {
                        return ListView.builder(
                            itemCount: leadData.length,
                            itemBuilder: (context, i) {
                              leadSubType = leadData[i].leadsubtype;
                              print("lead sub type: $leadSubType");
                              return Container(
                                child: Column(
                                  children: [
                                    PersonalDetailsCard(
                                      leadData: leadData,
                                      dataTextValue: "Name",
                                      dataValue: leadData[i].name,
                                    ),
                                    PersonalDetailsCard(
                                      leadData: leadData,
                                      dataTextValue: "Mobile No.",
                                      dataValue: leadData[i].moblieno,
                                    ),
                                    PersonalDetailsCard(
                                      leadData: leadData,
                                      dataTextValue: "Whatsapp No.",
                                      dataValue: leadData[i].whatsappno,
                                    ),
                                    PersonalDetailsCard(
                                      leadData: leadData,
                                      dataTextValue: "Address",
                                      dataValue: leadData[i].address,
                                    ),
                                    PersonalDetailsCard(
                                      leadData: leadData,
                                      dataTextValue: "Village",
                                      dataValue: leadData[i].village,
                                    ),
                                    PersonalDetailsCard(
                                      leadData: leadData,
                                      dataTextValue: "City",
                                      dataValue: leadData[i].city,
                                    ),
                                    PersonalDetailsCard(
                                      leadData: leadData,
                                      dataTextValue: "Tehsil",
                                      dataValue: leadData[i].tehsil,
                                    ),
                                    PersonalDetailsCard(
                                      leadData: leadData,
                                      dataTextValue: "PinCode",
                                      dataValue: leadData[i].pincode,
                                    ),
                                    PersonalDetailsCard(
                                      leadData: leadData,
                                      dataTextValue: "Distance",
                                      dataValue: leadData[i].distance,
                                    ),
                                    PersonalDetailsCard(
                                      leadData: leadData,
                                      dataTextValue: "Lead Source",
                                      dataValue:
                                          leadData[i].leadsource.toString(),
                                    ),
                                    PersonalDetailsCard(
                                      leadData: leadData,
                                      dataTextValue: "Lead Status",
                                      dataValue:
                                          leadData[i].leadStatus.toString(),
                                    ),
                                  ],
                                ),
                              );
                            });
                      }
                  }
                },
              ),
            ),
            Container(
              child: leadSubType == "Dealer"
                  ? FutureBuilder(
                      future: getDealerDetails(),
                      builder: (BuildContext context, AsyncSnapshot snapshot) {
                        late var dealerBusinessData =
                            (snapshot.data as List<DealerModel>).toList();
                        switch (snapshot.connectionState) {
                          case ConnectionState.none:
                            return new Text('Loading...');
                          case ConnectionState.waiting:
                            return new Center(
                              child: Text("Loading Data.."),
                            );
                          default:
                            if (snapshot.hasError) {
                              return Text("Error : ${snapshot.error}");
                            } else {
                              return ListView.builder(
                                  itemCount: dealerBusinessData.length,
                                  itemBuilder: (context, i) {
                                    return Container(
                                      child: Column(
                                        children: [
                                          DealerBusinessDetailsCard(
                                              dealerBusinessData:
                                                  dealerBusinessData,
                                              dataValue: dealerBusinessData[i]
                                                  .shopName,
                                              dataTextValue: "Shop Name "),
                                          DealerBusinessDetailsCard(
                                              dealerBusinessData:
                                                  dealerBusinessData,
                                              dataValue: dealerBusinessData[i]
                                                  .monthlySaleApprox,
                                              dataTextValue:
                                                  "Monthly Sales Approx "),
                                          DealerBusinessDetailsCard(
                                              dealerBusinessData:
                                                  dealerBusinessData,
                                              dataValue: dealerBusinessData[i]
                                                  .requirmentsFeeds,
                                              dataTextValue:
                                                  "Feed Requirement "),
                                          DealerBusinessDetailsCard(
                                              dealerBusinessData:
                                                  dealerBusinessData,
                                              dataValue: dealerBusinessData[i]
                                                  .quantity,
                                              dataTextValue: "Quantity "),
                                          DealerBusinessDetailsCard(
                                              dealerBusinessData:
                                                  dealerBusinessData,
                                              dataValue: dealerBusinessData[i]
                                                  .currentFeedsSaleCompany,
                                              dataTextValue:
                                                  "Current Feed Company "),
                                          DealerBusinessDetailsCard(
                                              dealerBusinessData:
                                                  dealerBusinessData,
                                              dataValue: dealerBusinessData[i]
                                                  .whyThisCompany,
                                              dataTextValue:
                                                  "Why This Company "),
                                          DealerBusinessDetailsCard(
                                              dealerBusinessData:
                                                  dealerBusinessData,
                                              dataValue: dealerBusinessData[i]
                                                  .whyNotSkylark,
                                              dataTextValue:
                                                  "Why Not Skylark "),
                                          DealerBusinessDetailsCard(
                                              dealerBusinessData:
                                                  dealerBusinessData,
                                              dataValue: dealerBusinessData[i]
                                                  .enquiryFor,
                                              dataTextValue: "Enquiry For "),
                                          DealerBusinessDetailsCard(
                                              dealerBusinessData:
                                                  dealerBusinessData,
                                              dataValue: dealerBusinessData[i]
                                                  .todayDiscussionFor,
                                              dataTextValue:
                                                  "Last Meeting Discussion For "),
                                          DealerBusinessDetailsCard(
                                              dealerBusinessData:
                                                  dealerBusinessData,
                                              dataValue: dealerBusinessData[i]
                                                  .otherCompanySalesmanName,
                                              dataTextValue:
                                                  "Other Comp. Salesman "),
                                          DealerBusinessDetailsCard(
                                              dealerBusinessData:
                                                  dealerBusinessData,
                                              dataValue: dealerBusinessData[i]
                                                  .mobileNo,
                                              dataTextValue: "Sales Man No. "),
                                          DealerBusinessDetailsCard(
                                              dealerBusinessData:
                                                  dealerBusinessData,
                                              dataValue: dealerBusinessData[i]
                                                  .knowAboutSkylark,
                                              dataTextValue:
                                                  "Knows About Skylark? "),
                                          DealerBusinessDetailsCard(
                                              dealerBusinessData:
                                                  dealerBusinessData,
                                              dataValue: dealerBusinessData[i]
                                                  .facebookPageLike,
                                              dataTextValue:
                                                  "Facebook Page Like? "),
                                          DealerBusinessDetailsCard(
                                              dealerBusinessData:
                                                  dealerBusinessData,
                                              dataValue: dealerBusinessData[i]
                                                  .knowCutomerCareNo,
                                              dataTextValue:
                                                  "Knows Cust. Care No.? "),
                                          DealerBusinessDetailsCard(
                                              dealerBusinessData:
                                                  dealerBusinessData,
                                              dataValue:
                                                  dealerBusinessData[i].remarks,
                                              dataTextValue: "Remarks "),
                                        ],
                                      ),
                                    );
                                  });
                            }
                        }
                      },
                    )
                  : leadSubType == "Dairy"
                      ? FutureBuilder(
                          future: getDairyFarmDetails(),
                          builder:
                              (BuildContext context, AsyncSnapshot snapshot) {
                            print(
                                "Business details lead sub type: $leadSubType ");
                            late var dairyBusinessData =
                                (snapshot.data as List<DairyFarmerModel>)
                                    .toList();
                            switch (snapshot.connectionState) {
                              case ConnectionState.none:
                                return new Text('Loading...');
                              case ConnectionState.waiting:
                                return new Center(
                                  child: Text("Loading Data.."),
                                );
                              default:
                                if (snapshot.hasError) {
                                  return Text("Error : ${snapshot.error}");
                                } else {
                                  return ListView.builder(
                                      itemCount: dairyBusinessData.length,
                                      itemBuilder: (context, i) {
                                        return Container(
                                          child: Column(
                                            children: [
                                              DairyBusinessDetailsCard(
                                                  dairyBusinessData:
                                                      dairyBusinessData,
                                                  dataValue:
                                                      dairyBusinessData[i]
                                                          .dairyName,
                                                  dataTextValue: "Dairy Name "),
                                            ],
                                          ),
                                        );
                                      });
                                }
                            }
                          },
                        )
                      : FutureBuilder(
                          future: getPoultryFarmDetails(),
                          builder:
                              (BuildContext context, AsyncSnapshot snapshot) {
                            late var poultryBusinessData =
                                (snapshot.data as List<FarmerPoultry>).toList();
                            switch (snapshot.connectionState) {
                              case ConnectionState.none:
                                return new Text('Loading...');
                              case ConnectionState.waiting:
                                return new Center(
                                  child: Text("Loading Data.."),
                                );
                              default:
                                if (snapshot.hasError) {
                                  return Text("Error : ${snapshot.error}");
                                } else {
                                  return ListView.builder(
                                      itemCount: poultryBusinessData.length,
                                      itemBuilder: (context, i) {
                                        return Container(
                                          child: Column(
                                            children: [
                                              PoultryBusinessDetailsCard(
                                                  poultryBusinessData:
                                                      poultryBusinessData,
                                                  dataValue:
                                                      poultryBusinessData[i]
                                                          .farmName,
                                                  dataTextValue: "Farm Name "),
                                              PoultryBusinessDetailsCard(
                                                  poultryBusinessData:
                                                      poultryBusinessData,
                                                  dataValue:
                                                      poultryBusinessData[i]
                                                          .farmManager,
                                                  dataTextValue:
                                                      "Manager Name "),
                                              PoultryBusinessDetailsCard(
                                                  poultryBusinessData:
                                                      poultryBusinessData,
                                                  dataValue:
                                                      poultryBusinessData[i]
                                                          .mobile,
                                                  dataTextValue:
                                                      "Manager Mobile No. "),
                                              PoultryBusinessDetailsCard(
                                                  poultryBusinessData:
                                                      poultryBusinessData,
                                                  dataValue:
                                                      poultryBusinessData[i]
                                                          .chickCompany,
                                                  dataTextValue:
                                                      "Current Chick Comp. "),
                                              PoultryBusinessDetailsCard(
                                                  poultryBusinessData:
                                                      poultryBusinessData,
                                                  dataValue:
                                                      poultryBusinessData[i]
                                                          .whyThisChickCompany,
                                                  dataTextValue:
                                                      "Why this Chick Comp.? "),
                                              PoultryBusinessDetailsCard(
                                                  poultryBusinessData:
                                                      poultryBusinessData,
                                                  dataValue:
                                                      poultryBusinessData[i]
                                                          .flockSize,
                                                  dataTextValue: "Flock Size "),
                                              PoultryBusinessDetailsCard(
                                                  poultryBusinessData:
                                                      poultryBusinessData,
                                                  dataValue:
                                                      poultryBusinessData[i]
                                                          .flockCapacity,
                                                  dataTextValue:
                                                      "Flock Capacity "),
                                              PoultryBusinessDetailsCard(
                                                  poultryBusinessData:
                                                      poultryBusinessData,
                                                  dataValue:
                                                      poultryBusinessData[i]
                                                          .flockStartingDate
                                                          .toString()
                                                          .substring(0, 10),
                                                  dataTextValue:
                                                      "Flock Starting Date "),
                                              PoultryBusinessDetailsCard(
                                                  poultryBusinessData:
                                                      poultryBusinessData,
                                                  dataValue:
                                                      poultryBusinessData[i]
                                                          .feedCompany,
                                                  dataTextValue:
                                                      "Feed Company "),
                                              PoultryBusinessDetailsCard(
                                                  poultryBusinessData:
                                                      poultryBusinessData,
                                                  dataValue:
                                                      poultryBusinessData[i]
                                                          .whyThisFeedCompany,
                                                  dataTextValue:
                                                      "Why This Feed Comp.? "),
                                              PoultryBusinessDetailsCard(
                                                  poultryBusinessData:
                                                      poultryBusinessData,
                                                  dataValue:
                                                      poultryBusinessData[i]
                                                          .WhyNotSkylark,
                                                  dataTextValue:
                                                      "Why Not Skylark? "),
                                              PoultryBusinessDetailsCard(
                                                  poultryBusinessData:
                                                      poultryBusinessData,
                                                  dataValue: poultryBusinessData[
                                                          i]
                                                      .OtherCompanySalesmanName,
                                                  dataTextValue:
                                                      "Other Comp. Salesman "),
                                              PoultryBusinessDetailsCard(
                                                  poultryBusinessData:
                                                      poultryBusinessData,
                                                  dataValue:
                                                      poultryBusinessData[i]
                                                          .mobileNo,
                                                  dataTextValue:
                                                      "Other Salesman Mobile "),
                                              PoultryBusinessDetailsCard(
                                                  poultryBusinessData:
                                                      poultryBusinessData,
                                                  dataValue:
                                                      poultryBusinessData[i]
                                                          .knowAboutSkylark,
                                                  dataTextValue:
                                                      "Know About Skylark? "),
                                              PoultryBusinessDetailsCard(
                                                  poultryBusinessData:
                                                      poultryBusinessData,
                                                  dataValue:
                                                      poultryBusinessData[i]
                                                          .facebookPageLike,
                                                  dataTextValue:
                                                      "Facebook Page Like? "),
                                              PoultryBusinessDetailsCard(
                                                  poultryBusinessData:
                                                      poultryBusinessData,
                                                  dataValue:
                                                      poultryBusinessData[i]
                                                          .KnowCutomerCareNo,
                                                  dataTextValue:
                                                      "Knows Customer Care no? "),
                                              PoultryBusinessDetailsCard(
                                                  poultryBusinessData:
                                                      poultryBusinessData,
                                                  dataValue:
                                                      poultryBusinessData[i]
                                                          .remarks,
                                                  dataTextValue: "Remarks "),
                                            ],
                                          ),
                                        );
                                      });
                                }
                            }
                          },
                        ),
            ),
            Container(),
            Container(),
            Container(),
          ],
        ),

标签: flutterdartflutter-layoutflutter-dependencies

解决方案


我和一个三元三元运算符一起工作,它对我有用。在您的代码中,您拥有:

... ? FutureBuilder(...) : FutureBuilder(...) : FutureBuilder(...);

尝试将最后一部分更改为嵌套的三元运算符。

我在下面添加了一个如何解决我的问题的示例:

Center(
  child: Icon(
    widget.icon,
      color: widget.icon == Icons.call_made_outlined
           ? sendColor
           : (widget.icon == Icons.call_missed_outlined
               ? red[500]
               : primaryColor),
  ),
),

在我的情况下,我试图返回(或显示)红色图标颜色代表未接来电,蓝领代表已拨打电话,绿色代表已接听电话。你可以看到第一个三元的第二部分自己持有一个新的三元......

尝试嵌套三元方法。


推荐阅读