import 'dart:convert'; import 'package:marco/helpers/services/json_decoder.dart'; import 'package:marco/model/identifier_model.dart'; import 'package:flutter/services.dart'; class VisitorByChannelsModel extends IdentifierModel { final String channel; final int session, targetReached; final double bounceRate, pagePerSession; final DateTime sessionDuration; VisitorByChannelsModel(super.id, this.channel, this.session, this.targetReached, this.bounceRate, this.pagePerSession, this.sessionDuration); static VisitorByChannelsModel fromJSON(Map json) { JSONDecoder decoder = JSONDecoder(json); String channel = decoder.getString('channel'); int session = decoder.getInt('session'); int targetReached = decoder.getInt('target_reached'); double bounceRate = decoder.getDouble('bounce_rate'); double pagePerSession = decoder.getDouble('page_per_session'); DateTime sessionDuration = decoder.getDateTime('session_duration'); return VisitorByChannelsModel(decoder.getId, channel, session, targetReached, bounceRate, pagePerSession, sessionDuration); } static List listFromJSON(List list) { return list.map((e) => VisitorByChannelsModel.fromJSON(e)).toList(); } static List? _dummyList; static Future> get dummyList async { if (_dummyList == null) { dynamic data = json.decode(await getData()); _dummyList = listFromJSON(data); } return _dummyList!; } static Future getData() async { return await rootBundle.loadString('assets/data/visitors_by_channels_data.json'); } }