Compare commits
6 commits
3acf5b2899
...
7188c55660
Author | SHA1 | Date | |
---|---|---|---|
|
7188c55660 | ||
|
192b710e88 | ||
|
b909dd27dd | ||
|
163a2c9b54 | ||
|
06d25b9a0c | ||
|
75913280be |
5 changed files with 193 additions and 104 deletions
|
@ -18,6 +18,8 @@
|
||||||
- Make pie chart values more visible by adding the category's corresponding color as background
|
- Make pie chart values more visible by adding the category's corresponding color as background
|
||||||
- Welcome text on Setup view is now centered
|
- Welcome text on Setup view is now centered
|
||||||
- Editing entries is now done by tapping the entry, instead of a dedicated button
|
- Editing entries is now done by tapping the entry, instead of a dedicated button
|
||||||
|
- return iOS (Cupertino) widgets only on iOS/macOS
|
||||||
|
- Show action sheet in graph settings on iOS instead of InkWell
|
||||||
|
|
||||||
# 1.0.0-alpha+5
|
# 1.0.0-alpha+5
|
||||||
- Add tests
|
- Add tests
|
||||||
|
|
|
@ -465,7 +465,7 @@
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ARCHS = x86_64;
|
ARCHS = "$(ARCHS_STANDARD)";
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||||
|
@ -647,7 +647,7 @@
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
|
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ARCHS = x86_64;
|
ARCHS = "$(ARCHS_STANDARD)";
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||||
|
@ -672,7 +672,7 @@
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ARCHS = x86_64;
|
ARCHS = "$(ARCHS_STANDARD)";
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||||
|
|
|
@ -39,15 +39,11 @@
|
||||||
<key>UISupportedInterfaceOrientations</key>
|
<key>UISupportedInterfaceOrientations</key>
|
||||||
<array>
|
<array>
|
||||||
<string>UIInterfaceOrientationPortrait</string>
|
<string>UIInterfaceOrientationPortrait</string>
|
||||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
|
||||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
|
||||||
</array>
|
</array>
|
||||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||||
<array>
|
<array>
|
||||||
<string>UIInterfaceOrientationPortrait</string>
|
<string>UIInterfaceOrientationPortrait</string>
|
||||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
|
||||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
|
||||||
</array>
|
</array>
|
||||||
<key>UTExportedTypeDeclarations</key>
|
<key>UTExportedTypeDeclarations</key>
|
||||||
<array>
|
<array>
|
||||||
|
|
|
@ -11,10 +11,10 @@ abstract class PlatformWidget<A extends Widget, I extends Widget>
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
if (Platform.isAndroid) {
|
if (Platform.isIOS || Platform.isMacOS) {
|
||||||
return createAndroidWidget(context);
|
|
||||||
} else {
|
|
||||||
return createIosWidget(context);
|
return createIosWidget(context);
|
||||||
|
} else {
|
||||||
|
return createAndroidWidget(context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||||
import 'package:settings_ui/settings_ui.dart';
|
import 'package:settings_ui/settings_ui.dart';
|
||||||
|
@ -47,59 +50,103 @@ class _GraphTypeSettingsViewState extends State<GraphTypeSettingsView> {
|
||||||
? AppLocalizations.of(context).barChart
|
? AppLocalizations.of(context).barChart
|
||||||
: AppLocalizations.of(context).lineChart,
|
: AppLocalizations.of(context).lineChart,
|
||||||
),
|
),
|
||||||
onPressed: (c) => showAdaptiveDialog<void>(
|
onPressed: (c) {
|
||||||
context: c,
|
if (Platform.isIOS) {
|
||||||
builder: (ctx) => AlertDialog.adaptive(
|
// iOS does not use Material widgets => no inkwell support
|
||||||
title: Text(AppLocalizations.of(context).selectType),
|
showCupertinoModalPopup<void>(
|
||||||
content: SizedBox(
|
context: context,
|
||||||
height: 80,
|
builder: (ctx) => CupertinoActionSheet(
|
||||||
child: Column(
|
title: Text(AppLocalizations.of(context).selectType),
|
||||||
children: [
|
actions: [
|
||||||
SizedBox(
|
CupertinoActionSheetAction(
|
||||||
width: MediaQuery.of(ctx).size.width,
|
onPressed: () async {
|
||||||
child: InkWell(
|
final s = await SharedPreferences.getInstance();
|
||||||
child: Padding(
|
await s.setInt("yearlygraph", 1);
|
||||||
padding: const EdgeInsets.all(8),
|
_yearly = 1;
|
||||||
child: Text(
|
if (!ctx.mounted) return;
|
||||||
AppLocalizations.of(context).barChart,
|
Navigator.of(ctx).pop();
|
||||||
textAlign: TextAlign.center,
|
setState(() {});
|
||||||
),
|
},
|
||||||
),
|
child: Text(
|
||||||
onTap: () async {
|
AppLocalizations.of(context).barChart,
|
||||||
final s = await SharedPreferences.getInstance();
|
textAlign: TextAlign.center,
|
||||||
await s.setInt("yearlygraph", 1);
|
|
||||||
_yearly = 1;
|
|
||||||
if (!ctx.mounted) return;
|
|
||||||
Navigator.of(ctx).pop();
|
|
||||||
setState(() {});
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(
|
CupertinoActionSheetAction(
|
||||||
width: MediaQuery.of(context).size.width,
|
onPressed: () async {
|
||||||
child: InkWell(
|
final s = await SharedPreferences.getInstance();
|
||||||
child: Padding(
|
await s.setInt("yearlygraph", 2);
|
||||||
padding: const EdgeInsets.all(8),
|
_yearly = 2;
|
||||||
child: Text(
|
if (!ctx.mounted) return;
|
||||||
AppLocalizations.of(context).lineChart,
|
Navigator.of(ctx).pop();
|
||||||
textAlign: TextAlign.center,
|
setState(() {});
|
||||||
),
|
},
|
||||||
),
|
child: Text(
|
||||||
onTap: () async {
|
AppLocalizations.of(context).lineChart,
|
||||||
final s = await SharedPreferences.getInstance();
|
textAlign: TextAlign.center,
|
||||||
await s.setInt("yearlygraph", 2);
|
|
||||||
_yearly = 2;
|
|
||||||
if (!ctx.mounted) return;
|
|
||||||
Navigator.of(ctx).pop();
|
|
||||||
setState(() {});
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
);
|
||||||
),
|
} else {
|
||||||
),
|
showAdaptiveDialog<void>(
|
||||||
|
context: c,
|
||||||
|
builder: (ctx) => AlertDialog.adaptive(
|
||||||
|
title: Text(AppLocalizations.of(context).selectType),
|
||||||
|
content: SizedBox(
|
||||||
|
height: 80,
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
width: MediaQuery.of(ctx).size.width,
|
||||||
|
child: InkWell(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(8),
|
||||||
|
child: Text(
|
||||||
|
AppLocalizations.of(context).barChart,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
onTap: () async {
|
||||||
|
final s =
|
||||||
|
await SharedPreferences.getInstance();
|
||||||
|
await s.setInt("yearlygraph", 1);
|
||||||
|
_yearly = 1;
|
||||||
|
if (!ctx.mounted) return;
|
||||||
|
Navigator.of(ctx).pop();
|
||||||
|
setState(() {});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: MediaQuery.of(context).size.width,
|
||||||
|
child: InkWell(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(8),
|
||||||
|
child: Text(
|
||||||
|
AppLocalizations.of(context).lineChart,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
onTap: () async {
|
||||||
|
final s =
|
||||||
|
await SharedPreferences.getInstance();
|
||||||
|
await s.setInt("yearlygraph", 2);
|
||||||
|
_yearly = 2;
|
||||||
|
if (!ctx.mounted) return;
|
||||||
|
Navigator.of(ctx).pop();
|
||||||
|
setState(() {});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
),
|
),
|
||||||
SettingsTile.navigation(
|
SettingsTile.navigation(
|
||||||
title: Text(AppLocalizations.of(context).monthly),
|
title: Text(AppLocalizations.of(context).monthly),
|
||||||
|
@ -108,59 +155,103 @@ class _GraphTypeSettingsViewState extends State<GraphTypeSettingsView> {
|
||||||
? AppLocalizations.of(context).barChart
|
? AppLocalizations.of(context).barChart
|
||||||
: AppLocalizations.of(context).lineChart,
|
: AppLocalizations.of(context).lineChart,
|
||||||
),
|
),
|
||||||
onPressed: (c) => showAdaptiveDialog<void>(
|
onPressed: (c) {
|
||||||
context: c,
|
if (Platform.isIOS) {
|
||||||
builder: (ctx) => AlertDialog.adaptive(
|
// iOS does not use Material widgets => no inkwell support
|
||||||
title: Text(AppLocalizations.of(context).selectType),
|
showCupertinoModalPopup<void>(
|
||||||
content: SizedBox(
|
context: context,
|
||||||
height: 80,
|
builder: (ctx) => CupertinoActionSheet(
|
||||||
child: Column(
|
title: Text(AppLocalizations.of(context).selectType),
|
||||||
children: [
|
actions: [
|
||||||
SizedBox(
|
CupertinoActionSheetAction(
|
||||||
width: MediaQuery.of(ctx).size.width,
|
onPressed: () async {
|
||||||
child: InkWell(
|
final s = await SharedPreferences.getInstance();
|
||||||
child: Padding(
|
await s.setInt("monthlygraph", 1);
|
||||||
padding: const EdgeInsets.all(8),
|
_monthly = 1;
|
||||||
child: Text(
|
if (!ctx.mounted) return;
|
||||||
AppLocalizations.of(context).barChart,
|
Navigator.of(ctx).pop();
|
||||||
textAlign: TextAlign.center,
|
setState(() {});
|
||||||
),
|
},
|
||||||
),
|
child: Text(
|
||||||
onTap: () async {
|
AppLocalizations.of(context).barChart,
|
||||||
final s = await SharedPreferences.getInstance();
|
textAlign: TextAlign.center,
|
||||||
await s.setInt("monthlygraph", 1);
|
|
||||||
_monthly = 1;
|
|
||||||
if (!ctx.mounted) return;
|
|
||||||
Navigator.of(ctx).pop();
|
|
||||||
setState(() {});
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(
|
CupertinoActionSheetAction(
|
||||||
width: MediaQuery.of(ctx).size.width,
|
onPressed: () async {
|
||||||
child: InkWell(
|
final s = await SharedPreferences.getInstance();
|
||||||
child: Padding(
|
await s.setInt("monthlygraph", 2);
|
||||||
padding: const EdgeInsets.all(8),
|
_monthly = 2;
|
||||||
child: Text(
|
if (!ctx.mounted) return;
|
||||||
AppLocalizations.of(context).lineChart,
|
Navigator.of(ctx).pop();
|
||||||
textAlign: TextAlign.center,
|
setState(() {});
|
||||||
),
|
},
|
||||||
),
|
child: Text(
|
||||||
onTap: () async {
|
AppLocalizations.of(context).lineChart,
|
||||||
final s = await SharedPreferences.getInstance();
|
textAlign: TextAlign.center,
|
||||||
await s.setInt("monthlygraph", 2);
|
|
||||||
_monthly = 2;
|
|
||||||
if (!ctx.mounted) return;
|
|
||||||
Navigator.of(ctx).pop();
|
|
||||||
setState(() {});
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
);
|
||||||
),
|
} else {
|
||||||
),
|
showAdaptiveDialog<void>(
|
||||||
|
context: c,
|
||||||
|
builder: (ctx) => AlertDialog.adaptive(
|
||||||
|
title: Text(AppLocalizations.of(context).selectType),
|
||||||
|
content: SizedBox(
|
||||||
|
height: 80,
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
width: MediaQuery.of(ctx).size.width,
|
||||||
|
child: InkWell(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(8),
|
||||||
|
child: Text(
|
||||||
|
AppLocalizations.of(context).barChart,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
onTap: () async {
|
||||||
|
final s =
|
||||||
|
await SharedPreferences.getInstance();
|
||||||
|
await s.setInt("monthlygraph", 1);
|
||||||
|
_monthly = 1;
|
||||||
|
if (!ctx.mounted) return;
|
||||||
|
Navigator.of(ctx).pop();
|
||||||
|
setState(() {});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: MediaQuery.of(context).size.width,
|
||||||
|
child: InkWell(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(8),
|
||||||
|
child: Text(
|
||||||
|
AppLocalizations.of(context).lineChart,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
onTap: () async {
|
||||||
|
final s =
|
||||||
|
await SharedPreferences.getInstance();
|
||||||
|
await s.setInt("monthlygraph", 2);
|
||||||
|
_monthly = 2;
|
||||||
|
if (!ctx.mounted) return;
|
||||||
|
Navigator.of(ctx).pop();
|
||||||
|
setState(() {});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
Loading…
Reference in a new issue