相关疑难解决方法(0)

Freezed 和 json_serialized:如何使用自定义转换器

我想将自定义转换器添加到冻结的类中,就像这个答案一样。

我用这段代码尝试过:

@freezed
class NewsPost with _$NewsPost {
  factory NewsPost({
    @JsonKey(name: "date") @TimestampConverter() DateTime? date,
  }) = _NewsPost;

  factory NewsPost.fromJson(Map<String, dynamic> json) =>
      _$NewsPostFromJson(json);
}
Run Code Online (Sandbox Code Playgroud)

但这没有用。任何想法都非常受欢迎!

为了您的兴趣,这是我的转换器:

class TimestampConverter implements JsonConverter<DateTime, Timestamp> {
  const TimestampConverter();

  @override
  DateTime fromJson(Timestamp timestamp) {
    return timestamp.toDate();
  }

  @override
  Timestamp toJson(DateTime date) => Timestamp.fromDate(date);
}
Run Code Online (Sandbox Code Playgroud)

谢谢 :-)

flutter json-serializable freezed

33
推荐指数
2
解决办法
2万
查看次数

如何将 Firestore 时间戳打印为格式化的日期和时间

我的时间戳Timestamp(seconds=1560523991, nanoseconds=286000000)在 Flutter Firestore 快照中返回。

我想将其打印为格式正确的日期和时间。

DateTime.now()在创建新记录并使用 Firestore 快照检索它时使用将当前 DateTime 存储在 Firestore 中,但我无法转换为格式化的日期时间。我正在使用 libintl.dart进行格式化。

保存数据的代码

       d={'amount':amount,
      'desc':desc,
      'user_id':user_id,
      'flie_ref':url.toString(),
      'date':'${user_id}${DateTime.now().day}-${DateTime.now().month}-${DateTime.now().year}',
      'timestamp':DateTime.now()
return Firestore.instance.collection('/data').add(d).then((v){return true;
    }).catchError((onError)=>print(onError));
    });

Accessing with 

    FutureBuilder(
                  future: Firestore.instance
                      .collection('data')
                      .where('user_id', isEqualTo:_user_id)
                      .getDocuments(),
                  builder: (BuildContext context,
                      AsyncSnapshot<QuerySnapshot> snapshot) {
                    if (!snapshot.hasData)
                      return Container(
                          child: Center(child: CircularProgressIndicator()));
                    return ListView.builder(
                        itemCount: snapshot.data.documents.length,
                        itemBuilder: (BuildContext context, int index) {
                          return Column(
                            children: <Widget>[
       Text(DateFormat.yMMMd().add_jm().format(DateTime.parse(snapshot.data.documents[index].data['timestamp'].toString())]);


....
Run Code Online (Sandbox Code Playgroud)

抛出的错误是

日期格式无效。

我期待输出是: 'Jan 17, 2019, 2:19 PM'

time dart flutter google-cloud-firestore

24
推荐指数
5
解决办法
3万
查看次数