blob: 9d757b85151a47ebdd9ce610406489c9a3593cb3 [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:meta/meta.dart';
import 'ui/fake_flutter/fake_flutter.dart';
class FlutterVersion {
FlutterVersion._({
@required this.version,
@required this.channel,
@required this.repositoryUrl,
@required this.frameworkRevision,
@required this.frameworkCommitDate,
@required this.engineRevision,
@required this.dartSdkVersion,
});
factory FlutterVersion.parse(Map<String, dynamic> json) {
return FlutterVersion._(
version: json['frameworkVersion'],
channel: json['channel'],
repositoryUrl: json['repositoryUrl'],
frameworkRevision: json['frameworkRevisionShort'],
frameworkCommitDate: json['frameworkCommitDate'],
engineRevision: json['engineRevisionShort'],
dartSdkVersion: json['dartSdkVersion'],
);
}
final String version;
final String channel;
final String repositoryUrl;
final String frameworkRevision;
final String frameworkCommitDate;
final String engineRevision;
final String dartSdkVersion;
String get flutterVersionSummary => [
if (version != 'unknown') version,
'channel $channel',
repositoryUrl ?? 'unknown source',
].join(' • ');
String get frameworkVersionSummary =>
'revision $frameworkRevision • $frameworkCommitDate';
String get engineVersionSummary => 'revision $engineRevision';
@override
bool operator ==(other) {
return version == other.version &&
channel == other.channel &&
repositoryUrl == other.repositoryUrl &&
frameworkRevision == other.frameworkRevision &&
frameworkCommitDate == other.frameworkCommitDate &&
engineRevision == other.engineRevision &&
dartSdkVersion == other.dartSdkVersion;
}
@override
int get hashCode => hashValues(
version,
channel,
repositoryUrl,
frameworkRevision,
frameworkCommitDate,
engineRevision,
dartSdkVersion,
);
}