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

hef*_*kat 5 dart firebase flutter google-cloud-firestore

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

附加信息。很可能我的做法全错了。我正在努力实现下图所示的效果。是一个无限滚动的“日历”,显示相应日期的提要。我开始认为这不是选项卡视图问题,需要以其他方式完成。

在此输入图像描述

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

我正在创建一个应用程序,该应用程序在 Flutter 中创建 StreamBuilder,该应用程序依赖于比较日期来返回 Firestore 数据。

我创建了一个可能的日期选项卡值的数组。当用户选择该选项卡时,我只需要比较日期 - 无时间戳,并显示在本地时间具有匹配日期字段的游戏流。

我有多个选项卡,其中一个视图不断变化,因此选项卡与小部件的比例不是 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);
  }
}
Run Code Online (Sandbox Code Playgroud)

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

@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]),
          );
        }),
      ),
    );
   }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

任何帮助都会很棒。也许我只是想错了。

bla*_*eil 9

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(),
Run Code Online (Sandbox Code Playgroud)