Commit cc628ff
Changed files (3)
lib
l10n
screens
subsettings
lib/l10n/app_en.arb
@@ -427,5 +427,7 @@
"note": "Note",
"@note": {},
"color": "Color",
- "@color": {}
+ "@color": {},
+ "exportConfigDB": "export config.db",
+ "configDBExplainer": "The config.db does not include all configuration info. For more debug information use the copy button at the top."
}
lib/screens/subsettings/version.dart
@@ -1,9 +1,14 @@
+import 'dart:io';
+
import 'package:blood_pressure_app/components/consistent_future_builder.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:package_info_plus/package_info_plus.dart';
+import 'package:path/path.dart';
+import 'package:share_plus/share_plus.dart';
import 'package:shared_preferences/shared_preferences.dart';
+import 'package:sqflite/sqflite.dart';
class VersionScreen extends StatelessWidget {
@@ -41,18 +46,41 @@ class VersionScreen extends StatelessWidget {
child: ConsistentFutureBuilder<List<Object>>(
future: Future.wait([PackageInfo.fromPlatform(), SharedPreferences.getInstance()]),
onData: (context, data) {
- final localizations = AppLocalizations.of(context);
PackageInfo packageInfo = data[0] as PackageInfo;
SharedPreferences sharedPrefs = data[1] as SharedPreferences;
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- Text(localizations!.packageNameOf(packageInfo.packageName)),
+ Text(localizations.packageNameOf(packageInfo.packageName)),
Text(localizations.versionOf(packageInfo.version)),
Text(localizations.buildNumberOf(packageInfo.buildNumber)),
Text(localizations.buildSignatureOf(packageInfo.buildSignature)),
- const SizedBox(height: 30,),
+ Container(
+ padding: const EdgeInsets.symmetric(vertical: 20),
+ child: Column(
+ children: [
+ Center(
+ child: FilledButton.icon(
+ onPressed: () async {
+ var dbPath = await getDatabasesPath();
+
+ assert(dbPath != inMemoryDatabasePath);
+ dbPath = join(dbPath, 'config.db');
+ assert(Platform.isAndroid);
+ Share.shareXFiles([
+ XFile(dbPath,)
+ ]);
+ },
+ icon: const Icon(Icons.share),
+ label: Text(localizations.exportConfigDB),
+ ),
+ ),
+ Text(localizations.configDBExplainer,
+ style: Theme.of(context).textTheme.labelMedium,),
+ ],
+ ),
+ ),
Text(localizations.sharedPrefsDump),
Table(
children: [
lib/screens/error_reporting.dart
@@ -114,6 +114,24 @@ class ErrorScreen extends StatelessWidget {
},
child: const Text('rescue measurements')
),
+ TextButton(
+ onPressed: () async {
+ try {
+ var dbPath = await getDatabasesPath();
+
+ assert(dbPath != inMemoryDatabasePath);
+ dbPath = join(dbPath, 'config.db');
+ assert(Platform.isAndroid);
+ Share.shareXFiles([
+ XFile(dbPath,)
+ ]);
+ } catch(e) {
+ scaffoldMessenger.showSnackBar(SnackBar(
+ content: Text('ERR: ${e.toString()}')));
+ }
+ },
+ child: const Text('rescue config.db')
+ ),
TextButton(
onPressed: () async {
try {