
This required me wrapping the new Activity APIs as well as adding the missing pubspec.yaml @abarth
45 lines
1.3 KiB
Dart
45 lines
1.3 KiB
Dart
// Copyright 2015 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 'dart:convert';
|
|
import 'dart:io';
|
|
import 'dart:async';
|
|
|
|
import 'package:path/path.dart' as path;
|
|
|
|
import 'main.dart';
|
|
import 'package:sky/mojo/activity.dart';
|
|
|
|
String cachedDataFilePath = null;
|
|
|
|
Future<String> dataFilePath() async {
|
|
if (cachedDataFilePath == null) {
|
|
String dataDir = await getFilesDir();
|
|
cachedDataFilePath = path.join(dataDir, 'data.json');
|
|
}
|
|
return cachedDataFilePath;
|
|
}
|
|
|
|
Future<List<Measurement>> loadFitnessData() async {
|
|
List<Measurement> items = [];
|
|
String dataPath = await dataFilePath();
|
|
print("Loading from $dataPath");
|
|
JsonDecoder decoder = new JsonDecoder();
|
|
var data = await decoder.convert(await new File(dataPath).readAsString());
|
|
data.forEach((item) {
|
|
items.add(new Measurement.fromJson(item));
|
|
});
|
|
return items;
|
|
}
|
|
|
|
// Intentionally synchronous for execution just before shutdown.
|
|
Future saveFitnessData(List<Measurement> data) async {
|
|
String dataPath = await dataFilePath();
|
|
print("Saving to $dataPath");
|
|
JsonEncoder encoder = new JsonEncoder();
|
|
String contents = await encoder.convert(data);
|
|
File dataFile = await new File(dataPath).writeAsString(contents);
|
|
print("Success! $dataFile");
|
|
}
|