feat(app): responsive asset detail layout, full width chart, reactive hero header, shimmer loaders and enriched fundamentals
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
class MatchedAssetModel extends Equatable {
|
||||
final String isin;
|
||||
final String symbol;
|
||||
final String name;
|
||||
|
||||
const MatchedAssetModel({
|
||||
required this.isin,
|
||||
required this.symbol,
|
||||
required this.name,
|
||||
});
|
||||
|
||||
factory MatchedAssetModel.fromJson(Map<String, dynamic> json) {
|
||||
return MatchedAssetModel(
|
||||
isin: (json['isin'] ?? json['Isin'])?.toString() ?? '',
|
||||
symbol: (json['symbol'] ?? json['Symbol'] ?? json['ticker'] ?? json['Ticker'])?.toString() ?? '',
|
||||
name: (json['name'] ?? json['Name'] ?? json['companyName'] ?? json['CompanyName'])?.toString() ?? '',
|
||||
);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'isin': isin,
|
||||
'symbol': symbol,
|
||||
'name': name,
|
||||
};
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props => [isin, symbol, name];
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'finbert_result_model.dart';
|
||||
import 'matched_asset_model.dart';
|
||||
|
||||
class NewsArticleModel extends Equatable {
|
||||
final String id;
|
||||
@@ -17,6 +18,7 @@ class NewsArticleModel extends Equatable {
|
||||
final double sentimentScore;
|
||||
final double confidence;
|
||||
final FinbertResultModel? finbertResult;
|
||||
final List<MatchedAssetModel> matchedAssets;
|
||||
|
||||
const NewsArticleModel({
|
||||
required this.id,
|
||||
@@ -32,9 +34,16 @@ class NewsArticleModel extends Equatable {
|
||||
required this.sentimentScore,
|
||||
required this.confidence,
|
||||
this.finbertResult,
|
||||
this.matchedAssets = const [],
|
||||
});
|
||||
|
||||
factory NewsArticleModel.fromJson(Map<String, dynamic> json) {
|
||||
List<MatchedAssetModel> assets = [];
|
||||
final mList = json['matchedAssets'] ?? json['MatchedAssets'];
|
||||
if (mList != null && mList is List) {
|
||||
assets = mList.map((e) => MatchedAssetModel.fromJson(e as Map<String, dynamic>)).toList();
|
||||
}
|
||||
|
||||
return NewsArticleModel(
|
||||
id: json['id']?.toString() ?? json['Id']?.toString() ?? '',
|
||||
title: json['title']?.toString() ?? json['Title']?.toString() ?? 'No Title',
|
||||
@@ -52,6 +61,7 @@ class NewsArticleModel extends Equatable {
|
||||
finbertResult: (json['finbertResult'] != null || json['FinbertResult'] != null)
|
||||
? FinbertResultModel.fromJson(json['finbertResult'] ?? json['FinbertResult'])
|
||||
: null,
|
||||
matchedAssets: assets,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user