Android 如何根据flifter中文本小部件的索引将多个文本小部件的数据传递到字符串列表
我通过StreamBuilder从firestore中获取数据,以包含文本小部件列表视图的形式。我想使用toString()将每个文本小部件的数据传递给一个单独的字符串。如何根据索引将每个文本小部件分别转换为字符串Android 如何根据flifter中文本小部件的索引将多个文本小部件的数据传递到字符串列表,android,flutter,dart,google-cloud-firestore,Android,Flutter,Dart,Google Cloud Firestore,我通过StreamBuilder从firestore中获取数据,以包含文本小部件列表视图的形式。我想使用toString()将每个文本小部件的数据传递给一个单独的字符串。如何根据索引将每个文本小部件分别转换为字符串 Widget download(){ return StreamBuilder( stream: Firestore.instance.collection('branch11').snapshots(), builder: (context,snapshot){ if(!s
Widget download(){
return StreamBuilder(
stream: Firestore.instance.collection('branch11').snapshots(),
builder: (context,snapshot){
if(!snapshot.hasData) return CircularProgressIndicator();
return ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (context,index){
DocumentSnapshot subjects= snapshot.data.documents[index];
return ListView(
children: <Widget>[
Text('${subjects['download']}'),
],);
},);
},
);
String pdfUrl = download().toString();
Widget下载(){
返回流生成器(
流:Firestore.instance.collection('branch11').snapshots(),
生成器:(上下文,快照){
如果(!snapshot.hasData)返回CircularProgressIndicator();
返回ListView.builder(
itemCount:snapshot.data.documents.length,
itemBuilder:(上下文,索引){
DocumentSnapshot subjects=snapshot.data.documents[index];
返回列表视图(
儿童:[
文本(“${subjects['download']}”),
],);
},);
},
);
字符串pdfUrl=download().toString();
首先,我认为您必须ListTile或另一个小部件(图像、原始..等)作为小部件生成器,而不是另一个ListView内部的另一个ListView 所以,您的代码将像这样简单,onTap在用户单击项目时回调每次下载,如果您想制作更复杂的小部件,只需用新的小部件替换ListTile即可
StreamBuilder(
stream: Firestore.instance.collection('branch11').snapshots(),
builder: (context,snapshot){
if(!snapshot.hasData) return CircularProgressIndicator();
return ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (context,index){
DocumentSnapshot subjects= snapshot.data.documents[index];
return ListTile(
title: Text(subjects['name']),
onTap: (){
String downloadUrl = subjects['download'];
String name= subjects['name'];
debugPrint("name at $index =$name");
debugPrint("downloadUrl at $index =$downloadUrl");
//do what you want here
},
);
},);
},
);
在屏幕之间发送数据
-使SecondScreen构造函数获取要发送给它的数据类型的参数。在此特定示例中,数据定义为字符串值,并在此处使用this.text进行设置
class SecondScreen extends StatelessWidget {
final String text;
SecondScreen({Key key, @required this.text}) : super(key: key);
...
然后使用FirstScreen小部件中的导航器将路由推送到SecondScreen小部件。将要作为参数发送的数据放入其构造函数中
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SecondScreen(text: 'Hello',),
));
请添加更多解释!!listview包含从firestore集合“branch11”获取数据的文本小部件。我要做的是使用toString()将这些文本小部件转换为字符串。假设listview中有4个文本小部件,我希望将它们转换为4个不同的字符串,而不仅仅是一个字符串。并且“下载”是字段的键??如果可以添加firestore快照图像是,“下载”是包含URL的我的字段的键。当用户单击“下载/预览”按钮时,他将被重定向到新的屏幕组webview的初始化,其初始url以listview中的文本小部件的形式从firestore中获取。问题是我想将这些文本小部件转换为字符串,但我不知道如何将这些文本小部件转换为字符串,因为将有多个文本小部件。感谢这一点,它确实解决了我的主要问题,但我该如何处理What’下载URL字符串到另一个屏幕的数据是什么?@youtubegamer im编辑答案,如果有帮助的话,请让我的答案正确。我把它弄得很复杂,但你用一种简单的方法解决了它。