当前位置: 首页 > 知识库问答 >
问题:

在显示检索到的数组字段时出错

米飞龙
2023-03-14

我正在尝试使用stream builder检索数组“类”,如下图所示。我尝试使用未来构建器进行相同的尝试,但没有从之前提出的问题中找到正确的解决方案。如何检索类列表并在listview中显示?

当我将鼠标悬停在['fields']上时,错误出现在< code > snapshot . data[' fields '][' class '][position]处,显示:

参数类型“String”不能分配给参数类型“int”

我使用流构建器实现了以下代码:

var ref;
  List values = [];
  Future<void> getassignment() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    final name = prefs.getString('orgname') ?? '';
    print(name);
   var ref = FirebaseFirestore.instance.collection('Org').doc(name).collection('Login').doc(FirebaseAuth.instance.currentUser.uid);
      print(ref);
      ref.snapshots().forEach((doc) {

    values = List.from(doc.data()['fields']['class']);
    print(values);
    

    });
  }
 @override
  void initState() {
    
    getassignment();
    super.initState();
  }
@override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Color(0xFF1976D2),
      body: StreamBuilder<List<DocumentSnapshot>>(
        stream: ref.snapshots(),
        builder: (context,snapshot){
         if(!snapshot.hasData){
            print("Error");
          }else{
            return Container(
             child: ListView.builder(
          itemCount: snapshot.data.length,
          itemBuilder: (context, position) {
            return GestureDetector(
              onTap: (){
                Navigator.of(context).push(MaterialPageRoute<Null>(
                                      builder: (BuildContext context){
                                        return new SubjectList(
                                          clas:snapshot.data['fields']['class'][position].toString(),
                                        );
                                      }
                                      ));
              },
              child: Card(
                
                child: Padding(
                  padding: const EdgeInsets.all(16.0),
                  child: Text(snapshot.data['fields']['class'][position].toString(), style: TextStyle(fontSize: 22.0),),
                  
                ),
              ),
            );
          },
        ),
           );
         
          }
        },
      )
          
        
    );
  }

共有1个答案

洪彬
2023-03-14

类数组中的数据实际上是一个字符串,而不是整数。你可以分辨出来,因为它在值周围有引号。如果它是数字类型值,则不会有引号。

如果需要数字,那么编写数据的代码应该使用数字类型变量,而不是字符串。您可能必须先将其转换为数字。

如果您不能更改编写文档的代码,那么您必须更改读取数据库的代码,以便将字符串转换为数字。

 类似资料:
  • 问题内容: 我在尝试使用 JasperReports 从Java生成报告时遇到问题,但出现错误。 堆栈跟踪: 问题答案: 你的豆长什么样?导致此错误的一个可能原因是您没有该字段的吸气剂。吸气剂必须遵守Java标准格式,因此您认为我愿意。吸气剂也必须是。

  • 我有个问题。我正在使用从我的Android应用程序调用我的api。一切正常,但当我收到一个空字段时,我会出现以下错误: 应为BEGIN_对象,但在第1行第8599列path$处为BEGIN_数组。元。标页码链接 问题是与链接字段有时是不是空 但当它为空时,就会出现错误。我的问题是,当链接字段为空时,我该如何处理? 这是我的全部回应: 这是我的POJO课程:

  • 问题内容: 我正在努力在数据框中显示日语字符,这些字符已使用RMySQL软件包从MySQL数据库中检索到。如果我将数据库中的字符串粘贴到一个变量中,该变量具有Encoding’UTF-8’,则日语字符显示良好。数据框列的编码为“未知”,我还没有使用iconv对其进行更改。 数据库的一行是: 检索使用: 第一行数据: 任何帮助,不胜感激。 问题答案: 通过在检索数据之前添加以下行,似乎可以解决此问题

  • 如果所有未分析的字段与搜索查询匹配,我希望突出显示它们。 索引实体如下所示: 假设我有一个,它带有,然后运行一个具有相同值的搜索查询,并使用以下代码突出显示搜索结果: 因此,我得到以下代码片段:. 这似乎是合理的,因为分析器将符号视为停止字,而将视为分隔符,并且不突出显示它们。但是我不知道如何在突出显示这个字段的同时避免使用analyzer。类中有一些方法需要而不是,但我不知道如何使用它们。 我想

  • 问题内容: 在我的模块中,我有以下many2one字段: 在以下位置: 我知道many2one场取 名字 字段的显示名称,但我想有它使用的组合,并在形式 我读过最好覆盖该方法,所以我尝试了以下方法: 并将其放在ÌnsuranceType`类中。既然什么也没发生:我是否必须将其放置在包含该字段的主类中?如果是这样,是否还有其他方法可以执行此操作,因为这也可能会更改其他many2one字段的显示方式?

  • 问题内容: 我需要在段落中突出显示关键字,就像google在其搜索结果中一样。假设我有一个带有博客文章的MySQL数据库。当用户搜索某个关键字时,我希望返回包含这些关键字的帖子,但只显示帖子的一部分(包含搜索关键字的段落)并突出显示那些关键字。 我的计划是这样的: 找到内容中包含搜索关键字的帖子ID; 再次阅读该帖子的内容,并将每个单词放入固定的缓冲区数组(50个单词)中,直到找到关键字。 您能为