Random/shuffle 使用 streambuilder 的数据?扑
Random/shuffle data using streambuilder? flutter
有没有办法随机化来自 firestore 的数据?我正在使用 streambuilder 和 staggeredview.countbuilder 。我找不到任何关于它的文档!现在数据以最后的注册顺序进入流。
有人可以帮忙吗?
大家好
这是我的代码
StreamBuilder(
stream: Firestore.instance.collection('users').where('myCity', isEqualTo: city).snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return Text('Loading');
return Container(
child: StaggeredGridView.countBuilder(
crossAxisCount: 2,
crossAxisSpacing: 12,
mainAxisSpacing: 12,
itemCount: snapshot.data.documents.length,
itemBuilder: (BuildContext context, int index) {
User user = User.fromDoc(snapshot.data
.documents[index]);
return GestureDetector(
child: Container(
decoration: BoxDecoration(
color: Colors.transparent,
borderRadius: BorderRadius.all(Radius.circular(12))
),
child: ClipRRect(
borderRadius: BorderRadius.circular(21),
child: Image.network(user.profileImageUrl,fit: BoxFit.cover,)
),
)
);
},
staggeredTileBuilder: (index){
return StaggeredTile.count(0, index.isEven? 1.2 :1.4);
},
),
);
},
);
您可以使用 List
class 的 shuffle() 方法
这将在每次流发出新值时随机播放。
class MyApp extends StatelessWidget {
@override
Widget build(context) {
return MaterialApp(
home: Scaffold(
body: StreamBuilder(
stream: Firestore.instance
.collection('users')
.where('myCity', isEqualTo: city)
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return Text('Loading');
final docs = snapshot.data.documents..shuffle();
return Container(
child: StaggeredGridView.countBuilder(
crossAxisCount: 2,
crossAxisSpacing: 12,
mainAxisSpacing: 12,
itemCount: docs.length,
itemBuilder: (BuildContext context, int index) {
User user = User.fromDoc(docs[index]);
return GestureDetector(
child: Container(
decoration: BoxDecoration(
color: Colors.transparent,
borderRadius: BorderRadius.all(Radius.circular(12))),
child: ClipRRect(
borderRadius: BorderRadius.circular(21),
child: Image.network(
user.profileImageUrl,
fit: BoxFit.cover,
),
),
),
);
},
staggeredTileBuilder: (index) {
return StaggeredTile.count(0, index.isEven ? 1.2 : 1.4);
},
),
);
},
),
),
);
}
}
有没有办法随机化来自 firestore 的数据?我正在使用 streambuilder 和 staggeredview.countbuilder 。我找不到任何关于它的文档!现在数据以最后的注册顺序进入流。 有人可以帮忙吗? 大家好
这是我的代码
StreamBuilder(
stream: Firestore.instance.collection('users').where('myCity', isEqualTo: city).snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return Text('Loading');
return Container(
child: StaggeredGridView.countBuilder(
crossAxisCount: 2,
crossAxisSpacing: 12,
mainAxisSpacing: 12,
itemCount: snapshot.data.documents.length,
itemBuilder: (BuildContext context, int index) {
User user = User.fromDoc(snapshot.data
.documents[index]);
return GestureDetector(
child: Container(
decoration: BoxDecoration(
color: Colors.transparent,
borderRadius: BorderRadius.all(Radius.circular(12))
),
child: ClipRRect(
borderRadius: BorderRadius.circular(21),
child: Image.network(user.profileImageUrl,fit: BoxFit.cover,)
),
)
);
},
staggeredTileBuilder: (index){
return StaggeredTile.count(0, index.isEven? 1.2 :1.4);
},
),
);
},
);
您可以使用 List
class 的 shuffle() 方法
这将在每次流发出新值时随机播放。
class MyApp extends StatelessWidget {
@override
Widget build(context) {
return MaterialApp(
home: Scaffold(
body: StreamBuilder(
stream: Firestore.instance
.collection('users')
.where('myCity', isEqualTo: city)
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return Text('Loading');
final docs = snapshot.data.documents..shuffle();
return Container(
child: StaggeredGridView.countBuilder(
crossAxisCount: 2,
crossAxisSpacing: 12,
mainAxisSpacing: 12,
itemCount: docs.length,
itemBuilder: (BuildContext context, int index) {
User user = User.fromDoc(docs[index]);
return GestureDetector(
child: Container(
decoration: BoxDecoration(
color: Colors.transparent,
borderRadius: BorderRadius.all(Radius.circular(12))),
child: ClipRRect(
borderRadius: BorderRadius.circular(21),
child: Image.network(
user.profileImageUrl,
fit: BoxFit.cover,
),
),
),
);
},
staggeredTileBuilder: (index) {
return StaggeredTile.count(0, index.isEven ? 1.2 : 1.4);
},
),
);
},
),
),
);
}
}