从Firestore返回Timestamp的类型,并与Flutter中的DateTime.now()进行比较

问题描述 投票:0回答:1

**编辑--------->

附加信息。我可能会错过这一切。我想要实现下面的图像。是一个无限滚动的“日历”,显示相应日期的Feed。我开始认为这不是标签视图问题,需要以其他方式完成。

enter image description here

------------------>

我正在创建一个在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]),
          );
        }),
      ),
    );
   }

enter image description here

任何帮助都会很棒。也许我只想到这一切都错了。

firebase dart flutter google-cloud-firestore
1个回答
1
投票
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(),
© www.soinside.com 2019 - 2024. All rights reserved.