如何在颤动的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的图像数组?

在具有动态高度的同一页面上颤动两个 listview.builder

当我的列表为空时,如何显示图像或文本?

如何在颤动的列表视图中嵌套列表视图?

颤动的重型平台代码导致UI滞后

如何在颤动中为 listview.builder 制作列表视图?