**编辑--------->
附加信息。我可能会错过这一切。我想要实现下面的图像。是一个无限滚动的“日历”,显示相应日期的Feed。我开始认为这不是标签视图问题,需要以其他方式完成。
------------------>
我正在创建一个在Flutter中创建StreamBuilder的应用程序,该应用程序依赖于比较日期以返回Firestore数据。
我已经创建了一个可能的日期选项卡值数组。当用户选择该选项卡时,我需要比较DATE ONLY - 没有时间戳并显示当地时间内具有匹配日期字段的游戏流。
我有多个选项卡,其中包含一个更改视图,因此选项卡与窗口小部件的比率不是1:1,但选项卡需要通过在单击的索引处返回日期值并将其设置为stateDate来控制窗口小部件的状态。
在今天的日期选项卡上启动选择的用户也很棒。
var datesList = [];
var _stateDate = DateTime.now();
initState(){
for (int i = -14; i < 57; i++) {
DateTime date = _stateDate;
date = date.add(Duration(days: i));
datesList.add(date);
}
}
------------------------------------------------------>
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: dateList.length,
child: Scaffold(
appBar: AppBar(
bottom: const PreferredSize(
preferredSize: Size.zero,
child: TabBar(
tabs: <Widget>[
_buildTabs(),
],
isScrollable: true,
),
),
),
body: TabBarView(
children: <Widget>[
_buildSchedule()
],
),
),
);
}
@override
Widget _buildSchedule() {
return Container(
child: Center(
child: StreamBuilder<QuerySnapshot>(
stream: Firestore.instance
.collection('schedule')
.where('time', isEqualTo: _stateDate)
.orderBy('date')
.snapshots(),
builder:
(BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData) {
return const Text('Loading...');
}
return ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (BuildContext context, int index) =>
_buildScheduleItem(context, snapshot.data.documents[index]),
);
}),
),
);
}
任何帮助都会很棒。也许我只想到这一切都错了。
DateTime _now = DateTime.now();
DateTime _start = DateTime(_now.year, _now.month, _now.day, 0, 0);
DateTime _end = DateTime(_now.year, _now.month, _now.day, 23, 59, 59);
stream: Firestore.instance
.collection('schedule')
.where('date', isGreaterThanOrEqualTo: _start)
.where('date', isLessThanOrEqualTo: _end)
.orderBy('date')
.snapshots(),