如何在颤动的Listview中显示字符串列表
Posted
技术标签:
【中文标题】如何在颤动的Listview中显示字符串列表【英文标题】:How to show list of Strings in Listview in flutter 【发布时间】:2020-12-12 02:08:50 【问题描述】:我有字符串列表。我需要在界面中将它们显示为列表。
List<String> spec_list = urlremoved.split(", ");
我只需要显示它们。但它不起作用。请帮助遇到或找出错误。 我附上了下面的代码
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
class ItemView extends StatefulWidget
final String docID123;
const ItemView( this.docID123) ;
@override
_ItemViewState createState() => _ItemViewState();
String name123;
class _ItemViewState extends State<ItemView>
@override
//String docuID = Widget.documentid;
Widget build(BuildContext context)
return Scaffold(
appBar: AppBar(
title: Text('Item Data'),
),
body: ListView(
children: <Widget>[
Text(widget.docID123),
getItems(),
],
),
);
Widget getItems()
return StreamBuilder(
//1597917013710
stream: Firestore.instance.collection('ads').document('1597917013710').snapshots(),
builder: (context, snapshot)
if (!snapshot.hasData)
//snapshot.data.toString();
return new Text("Loading");
DocumentSnapshot dd = snapshot.data;
var userDocument = snapshot.data;
//String myname = dd.data.toString();
int len = dd.data.length;
String jsonString = dd.data.toString();
String start = "[";
String end = "]";
final startIndex = jsonString.indexOf(start);
final endIndex = jsonString.indexOf(end, startIndex + start.length);
String next = jsonString.substring(startIndex + start.length, endIndex);
String imagelinkRemoved = jsonString.replaceAll(next, "");
String urlremoved = imagelinkRemoved.replaceAll("urls: [], ", "").replaceAll("", "").replaceAll("", "");
List<String> spec_list = urlremoved.split(", ");
int speclistlen = spec_list.length;
return Container(
child: Column(
children: <Widget>[
Text(spec_list[0]),
ListView.builder(
itemCount: speclistlen,
itemBuilder: (context,index)
return Text(spec_list[index]);
,
)
],
),
);
);
Future getCatagory() async
var firestone = Firestore.instance;
QuerySnapshot alldata = await firestone.collection("catagory_names/Vehicles").getDocuments();
for(int i=0;i<alldata.documents.length;i++)
DocumentSnapshot snap = alldata.documents[i];
return Text('12345');
【问题讨论】:
你应该在你的ListView.builder
中使用return Text(spec_list[index];
。
我正在使用 return Text(spec_list[index];...但没有输出
这可能是因为您的spec_list
为空。尝试打印speclistlen
以查看其中是否包含项目。
不为空
【参考方案1】:
只有当您的speclistlen
为空时才会发生这种情况虽然按照上面的代码,您似乎遇到了未绑定的高度异常。为了避免这种情况,在Listview.Builder
中使用shrinkWrap: true,
Widget getItems()
return StreamBuilder(
//1597917013710
stream: Stream.periodic(Duration(seconds: 2)),
builder: (context, snapshot)
String urlremoved = "I, am, jits555";
List<String> spec_list = urlremoved.split(", ");
int speclistlen = spec_list.length;
return Container(
child: Column(
children: <Widget>[
Text(spec_list[0]),
ListView.builder(
shrinkWrap: true,
itemCount: speclistlen,
itemBuilder: (context, index)
return Text(spec_list[index]);
,
)
],
),
);
);
【讨论】:
以上是关于如何在颤动的Listview中显示字符串列表的主要内容,如果未能解决你的问题,请参考以下文章
如何在listview颤动中显示来自firestore的图像数组?