我想要一个带有Stream中项目的ListView。 当然,列表的内容应反映出流中的变化。 并且由于我的设计师的怪癖,我希望列表中的项目由分隔符分隔。
想知道,创建带有分隔符的ListView并对Stream的变化做出反应的正确方法是什么。
body: StreamBuilder(
stream: someStream,
builder: (ctx, snapshot) {
return ListView.separated(
separatorBuilder: (context, index) => Divider(color: Colors.black),
itemCount: ***whatsHere***?,
itemBuilder: (BuildContext ctx, int index) {
...
希望,我错过了一些事情。 由于流的异步性质,因此以某种方式获得源流长度的想法看起来至少很奇怪。 StatefullWidget带有流订阅(和setState调用)似乎是可行的, 但是StreamBuilder的发明完全一样,不是吗?
答案 0 :(得分:1)
您的IgnoreNew
应该是元素列表,以便您可以像这样访问列表的snapshot
:
length
我建议也将body: StreamBuilder(
stream: someStream,
initialData: [],
builder: (ctx, snapshot) {
return ListView.separated(
separatorBuilder: (context, index) => Divider(color: Colors.black),
itemCount: snapshot.data.length,
itemBuilder: (BuildContext ctx, int index) {
final element = snapshot.data[index];
添加到StreamBuilder中,以免在快照中使用空值。
希望有帮助
答案 1 :(得分:1)
qqnorm(NormalFit)
可以具有不同的状态。
通常,您可以执行以下操作:
LogNormalFit <- fitdistr(obs, densfun="log-normal")
要获得更多控制权,您可以检查snapshot
,它们可以是if (!snapshot.hasError){
//return error message
}
if (!snapshot.hasData){
//return a loader
}
//else you have data
List<your items> = snapshot.data;
// do your thing with ListView.builder
,snapshot.connectionsState
,none
,done
。
您可以找到更多here for the AsyncSnapshot class和here for a quick tutorial
答案 2 :(得分:0)
尝试这种希望对您有用的
body: StreamBuilder(
stream: someStream,
builder: (ctx, snapshot) {
return ListView.separated(
separatorBuilder: (context, index) => Divider(color: Colors.black),
itemCount: snapshot.data.lenght,
itemBuilder: (BuildContext ctx, int index) {
final titre= snapshot.data[index].title ; // for example
return ListTile ( title : Text(titre)) ;
//....