我有从Firestore读取数组的问题,字符串可以在future builder中读取,如下所示,
widgets库捕获的异常接收者:null尝试调用:get(“经验”)
相关的导致错误的小部件是:FutureBuilder file:///xxxxxxxx/lib/regformSummary.dart:185:45当抛出异常时,这是堆栈:#0object.nosuchmethod(dart:core-patch/object_patch.dart:54:5)#1_regformSummaryState.build。(包:xxxxxx/regformsummary.dart:186:94)#2_futurebuilderstate.build(包:flutter/src/widgets/async.dart:773:55)#3statefulelement.build(包:flutter/src/widgets/framework.dart:4612:27)#4componentelement.performrebuild(包:flutter/src/widgets/framework.dart:4495:15)...
下面是读取字符串的工作代码
//under main widget builder
DocumentReference resumedata =_firestore.collection('users').doc(widget.userID).collection('resume').doc('info');
DocumentReference userdata = _firestore.collection('users').doc(widget.userID).collection('resume').doc('personalinfo');
//
.....,
FutureBuilder(future:userdata.get(),builder: (BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) {
if(snapshot.connectionState == ConnectionState.done){
String profilepic = snapshot.data.get('profilepic');
String name = snapshot.data.get('name');
String sname = snapshot.data.get('sname');
return Column(
children: [
Padding(
padding: EdgeInsets.symmetric(vertical: 10),
child: CircleAvatar(
minRadius: 40,
maxRadius: 80,
backgroundImage: NetworkImage('$profilepic'),
),
),//avatar
Padding(
padding: EdgeInsets.symmetric(horizontal: 10,vertical:3),
child: Text(
name,
style: GoogleFonts.openSans(textStyle: TextStyle(color: Colors.black54,fontSize: 24,fontWeight: FontWeight.bold)),
),
),//name
Padding(
padding: EdgeInsets.symmetric(horizontal: 10,vertical:3),
child: Text(
sname,
style: GoogleFonts.openSans(textStyle: TextStyle(color: Colors.black54,fontSize: 24,fontWeight: FontWeight.bold)),
),
),//sname
],
);
}
return SizedBox();
}),
下面是失败的代码
DefaultTabController(
length:8,
child: SingleChildScrollView(
physics: BouncingScrollPhysics(),
child: Column(
children: [
TabBar(
isScrollable: true,
indicatorWeight: 4.0,
indicatorColor:Colors.black38,
unselectedLabelColor: Colors.black38,
tabs: <Widget>[
Tab(
child:Text('Tecrübeler',style: TextStyle( color:
colorVal
)),
),
Tab(
child: Text('Eğitim',style: TextStyle( color: colorVal
)),
),
Tab(
child: Text('Yabancı Dil',style: TextStyle( color: colorVal)),
),
Tab(
child: Text('Sertifikalar',style: TextStyle( color: colorVal)),
),
Tab(
child: Text('Referanslar',style: TextStyle( color:colorVal)),
),
Tab(
child: Text('İlgilendiği Pozisyonlar',style: TextStyle( color: colorVal)),
),
Tab(
child: Text('CV dosyası ve Önyazı Dosyası',style: TextStyle( color: colorVal)),
),
Tab(
child: Text('İletişim Bilgileri',style: TextStyle( color: colorVal)),
),
],
),
SizedBox(
height:MediaQuery.of(context).size.height,
child: TabBarView(
children: <Widget>[
FutureBuilder(future:resumedata.get(),builder: (BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot){
List experiences = List.from(snapshot.data.get('experiences'));
if (snapshot.connectionState == ConnectionState.done){
ListView.builder(
itemCount: experiences.length,
itemBuilder: (context,index){
return Padding(
padding: EdgeInsets.symmetric(vertical: 5, horizontal: 10),
child: Container(
decoration: BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(20.0)), color: Colors.white, boxShadow: [
BoxShadow(color: Colors.black.withAlpha(100), blurRadius: 5.0),
]),
child: ListTile(
isThreeLine: true,
title: Text('${experiences[index]['position']}'),
subtitle: Text('${experiences[index]['company']} - ${experiences[index]['duration']}'),
),
),
);
});
.....and goes on
这是Firestore中的数据树
Firestore数据树
您在完成Snapshot.ConnectionState之前访问了Snapshot.Data。而且,您忘记“返回”您的列表视图。
if (snapshot.connectionState == ConnectionState.done) {
List experiences = List.from(snapshot.data.get('experiences')); // This line should be inside if block
return ListView.builder(...); // You forgot to add 'return' here
} ....
这是在future Builder中你的问题中的失败代码块中的代码。
问题内容: 我试图在Flutter中将列表插入到sql数据库中,但是我不知道该怎么办,有人可以帮助我吗? 当我初始化mi数据库时,我有这个: 我有这个要插入数据: 但是当y尝试插入这样的值时: 我收到这样的错误: 发生异常。 SqfliteDatabaseException(DatabaseException(java.lang.String无法转换为java.lang.Integer)sql’I
问题内容: 我需要将几个数组合并为一个数组。描述我要寻找的内容的最好方法是将阵列“交织”为单个阵列。 例如,从数组#1中取出第一项,然后追加到最终数组中。从数组2获取项目1,然后追加到最终数组。从数组#1获得第二项并追加…等。 最终的数组如下所示: array#1.element#1 array#2.element#1。。。 “踢球者”是各个阵列可以具有各种长度。 是否有更好的数据结构要使用? 问
问题内容: 我想知道从ArrayList转换为Array是否安全/建议?我有一个文本文件,每行一个字符串: 我想将它们读入数组列表,然后将其转换为数组。建议这样做/合法吗? 谢谢 问题答案: 是的,将转换为是安全的。一个好主意取决于您的预期用途。您需要提供的操作吗?如果是这样,请将其保留为。否则转换掉! 输出
我正在尝试将应用程序中的数组上载到Firestone。然而,它继续显示 使用无效数据调用了“firebaseError:function fieldvalue.arrayUnion()”。 这是我的代码: 请注意,数据库中还不存在数组“players”。
首先,我知道Firestore是如何工作的,并且花了很多时间评估不同的方法以获得良好的结构。但我仍在考虑以下情况: 有一个已知食谱的数据库。用户可以添加菜谱,但必须确认它们是真正的菜谱,而不仅仅是一些变体。因此,每个用户都可以从用户生成的食谱列表中选择receipes,说明他们知道如何烹饪(或添加新的)。 现在,我希望用户与其他人分享他们的receipes列表,但我不确定如何最好地使用Firest
我使用spring批处理,其中步骤1是从数据库读写到列表,然后有步骤2从阅读器从列表读写到数据库,处理和写到数据库,步骤3将从列表读写,处理和写到数据库。