【问题标题】:type 'String' is not a subtype of type 'int' of 'index' The relevant error-causing widget was FutureBuilder<dynamic>“String”类型不是“index”类型“int”的子类型相关的导致错误的小部件是 FutureBuilder<dynamic>
【发布时间】:2021-01-03 06:31:43
【问题描述】:

此时我遇到了错误。结果工作正常,但它显示错误一秒钟。 我认为这是因为我在 FutureBuilder 中使用 FutureBuilder。我需要调用两种方法 'future:' 所以我使用了另一个 FutureBuilder 但它显示错误。

sendOfferButton() {
    return FutureBuilder(
      initialData: [],
      future: getUserProfile(),
      builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
        cnicCheck = snapshot.data['CNIC'];
        return RaisedButton(
          padding: EdgeInsets.symmetric(vertical: 10),
          child: Text('Send Offer'),
          textColor: Colors.white,
          color: Colors.green,
          onPressed: () {
            if (cnicCheck == "verified") {
              Navigator.push(
                context,
                MaterialPageRoute(
                  builder: (_) => SendOffer(),
                ),
              );
            } else {
              Navigator.push(
                context,
                MaterialPageRoute(
                  builder: (_) => VerifyCNIC(),
                ),
              );
            }
          },
        );
      },
    );
  }
Future getUserProfile() async {
  DocumentSnapshot document = await FirebaseFirestore.instance
      .collection('Users')
      .doc(FirebaseAuth.instance.currentUser.email)
      .get();
      return document;
  
}

【问题讨论】:

    标签: firebase flutter dart flutter-futurebuilder


    【解决方案1】:

    您可以毫无问题地在 FutureBuilder 中使用 FutureBuilder。您收到错误是因为您试图在数据准备好之前访问它。试试这个。

    FutureBuilder(
        future: getUserProfile(),
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            final cnicCheck = snapshot.data['CNIC'];
            return RaisedButton(
              padding: EdgeInsets.symmetric(vertical: 10),
              child: Text('Send Offer'),
              textColor: Colors.white,
              color: Colors.green,
              onPressed: () {
                if (cnicCheck == "verified") {
                  Navigator.push(
                    context,
                    MaterialPageRoute(
                      builder: (_) => SendOffer(),
                    ),
                  );
                } else {
                  Navigator.push(
                    context,
                    MaterialPageRoute(
                      builder: (_) => VerifyCNIC(),
                    ),
                  );
                }
              },
            );
          } else
            return CircularProgressIndicator();
        },
      );
    

    【讨论】:

      【解决方案2】:

      我就这样解决了

       Future<String> getCNIC() async {
        DocumentSnapshot document = await FirebaseFirestore.instance
            .collection('Users')
            .doc(FirebaseAuth.instance.currentUser.email)
            .get();
             String getCNIC = document['CNIC'];
            return getCNIC;
      
      }
      
      sendOfferButton() {
          return FutureBuilder<String>(
            initialData: cnicCheck,
            future: getCNIC(),
            builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
              cnicCheck = snapshot.data;
              return RaisedButton(
                padding: EdgeInsets.symmetric(vertical: 10),
                child: Text('Send Offer'),
                textColor: Colors.white,
                color: Colors.green,
                onPressed: () {
                  if (cnicCheck == "verified") {
                    Navigator.push(
                      context,
                      MaterialPageRoute(
                        builder: (_) => SendOffer(),
                      ),
                    );
                  } else {
                    Navigator.push(
                      context,
                      MaterialPageRoute(
                        builder: (_) => VerifyCNIC(),
                      ),
                    );
                  }
                },
              );
            },
          );
        }
      

      【讨论】:

        猜你喜欢
        • 2022-09-27
        • 1970-01-01
        • 2021-05-10
        • 1970-01-01
        • 2020-09-10
        • 2019-04-24
        • 2021-09-10
        • 2021-02-01
        • 1970-01-01
        相关资源
        最近更新 更多