firebase - 无法在我的 Flutter 应用程序中获得 Sliver 效果
问题描述
我正在实现下面的代码,但条子效果根本不起作用。我在下面的代码中做错了什么?
我已经引用了这个示例链接,在 SliverFillRemaining 中我刚刚用 StreamBuilder() 替换了 Column(),我还应该添加或删除什么来获得条子效果?
return Scaffold(
body: CustomScrollView(
slivers: <Widget>[
SliverAppBar(expandedHeight: 100,
pinned: false,
flexibleSpace: FlexibleSpaceBar(
title: Text('FilledStacks'),
background: Image.asset(
'assets/user.png', // <=== Add your own image to assets or use a .network image instead.
fit: BoxFit.cover,
),
),
),
SliverFillRemaining(
child: StreamBuilder<QuerySnapshot>(
stream: query.snapshots(),
builder: (context,snapshot){
//String itemTitle = snapshot.data.documents[index]['postContent'];
if (!snapshot.hasData){
return Text("Loading");
}
return ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index){
String itemTitle = snapshot.data.documents[index]['itemTitle'];
return CardItem(itemTitle:itemTitle,);
});
},
),
)
],
),
);
解决方案
尝试以下操作:
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
void main() => runApp(SilverAppBarExample());
class SilverAppBarExample extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: CustomScrollView(
slivers: <Widget>[
SliverAppBar(
leading: IconButton(
icon: Icon(Icons.filter_1),
onPressed: () {
// Do something
}),
expandedHeight: 220.0,
floating: true,
pinned: true,
snap: true,
elevation: 50,
backgroundColor: Colors.pink,
flexibleSpace: FlexibleSpaceBar(
centerTitle: true,
title: Text('Title',
style: TextStyle(
color: Colors.white,
fontSize: 16.0,
)),
background: Image.network(
'https://images.pexels.com/photos/443356/pexels-photo-443356.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940',
fit: BoxFit.cover,
)),
),
StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection("countries").snapshots(),
builder: (context, snapshot) {
return SliverList(
delegate: new SliverChildBuilderDelegate(
(context, index) {
return ListTile(
contentPadding: EdgeInsets.all(100.0),
title: Text(
snapshot.data.documents[index].data["countryName"]),
);
},
childCount:
snapshot.hasData ? snapshot.data.documents.length : 0,
));
},
),
],
),
),
);
}
}
您需要使用SliverList
并在其中返回您拥有的数据列表,然后滚动将起作用。
推荐阅读
- oracle - Oracle 不显示违反完整性约束的名称
- python - 如何在数据框中使用带有多个变量的 fsolve
- spring-boot - 如何使用 Spring Actuator 配置 Kubernetes 启动探针
- c# - Asp.net 4.5 自定义属性网络表单
- javascript - 谷歌地图“Places API”
- javascript - 检查是否至少填写了一项输入 - 返回自定义有效性
- java - KsqlClientException:收到来自服务器的 401 响应:未经授权。错误代码:40100
- python - 如何使用 Watson Speech to Text api 解决错误 400
- office365 - OfficeRuntime.auth.getAccessToken() 在 Outlook Chrome Incognito 和 Safari 中不起作用
- javascript - 显示一个值并使用 HTML 将另一个值发送到后端