diff --git a/CHANGELOG.md b/CHANGELOG.md
index 07cf67f..00c4570 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -18,6 +18,8 @@
- Make pie chart values more visible by adding the category's corresponding color as background
- Welcome text on Setup view is now centered
- 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
- Add tests
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index be7a38d..0c5ec46 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -465,7 +465,7 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
- ARCHS = x86_64;
+ ARCHS = "$(ARCHS_STANDARD)";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
@@ -647,7 +647,7 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = {
- ARCHS = x86_64;
+ ARCHS = "$(ARCHS_STANDARD)";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
@@ -672,7 +672,7 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
- ARCHS = x86_64;
+ ARCHS = "$(ARCHS_STANDARD)";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index cb4ba33..a403f42 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -39,15 +39,11 @@
UISupportedInterfaceOrientations
UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
UISupportedInterfaceOrientations~ipad
UIInterfaceOrientationPortrait
UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
UTExportedTypeDeclarations
diff --git a/lib/pw/platformwidget.dart b/lib/pw/platformwidget.dart
index b48c0b0..5d7d290 100644
--- a/lib/pw/platformwidget.dart
+++ b/lib/pw/platformwidget.dart
@@ -11,10 +11,10 @@ abstract class PlatformWidget
@override
Widget build(BuildContext context) {
- if (Platform.isAndroid) {
- return createAndroidWidget(context);
- } else {
+ if (Platform.isIOS || Platform.isMacOS) {
return createIosWidget(context);
+ } else {
+ return createAndroidWidget(context);
}
}
diff --git a/lib/views/settings/graph_type.dart b/lib/views/settings/graph_type.dart
index 14d1b02..b946ba6 100644
--- a/lib/views/settings/graph_type.dart
+++ b/lib/views/settings/graph_type.dart
@@ -1,3 +1,6 @@
+import 'dart:io';
+
+import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:settings_ui/settings_ui.dart';
@@ -47,59 +50,103 @@ class _GraphTypeSettingsViewState extends State {
? AppLocalizations.of(context).barChart
: AppLocalizations.of(context).lineChart,
),
- onPressed: (c) => showAdaptiveDialog(
- 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(() {});
- },
+ onPressed: (c) {
+ if (Platform.isIOS) {
+ // iOS does not use Material widgets => no inkwell support
+ showCupertinoModalPopup(
+ context: context,
+ builder: (ctx) => CupertinoActionSheet(
+ title: Text(AppLocalizations.of(context).selectType),
+ actions: [
+ CupertinoActionSheetAction(
+ onPressed: () async {
+ final s = await SharedPreferences.getInstance();
+ await s.setInt("yearlygraph", 1);
+ _yearly = 1;
+ if (!ctx.mounted) return;
+ Navigator.of(ctx).pop();
+ setState(() {});
+ },
+ child: Text(
+ AppLocalizations.of(context).barChart,
+ textAlign: TextAlign.center,
),
),
- 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(() {});
- },
+ CupertinoActionSheetAction(
+ onPressed: () async {
+ final s = await SharedPreferences.getInstance();
+ await s.setInt("yearlygraph", 2);
+ _yearly = 2;
+ if (!ctx.mounted) return;
+ Navigator.of(ctx).pop();
+ setState(() {});
+ },
+ child: Text(
+ AppLocalizations.of(context).lineChart,
+ textAlign: TextAlign.center,
),
),
],
),
- ),
- ),
- ),
+ );
+ } else {
+ showAdaptiveDialog(
+ 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(
title: Text(AppLocalizations.of(context).monthly),
@@ -108,59 +155,103 @@ class _GraphTypeSettingsViewState extends State {
? AppLocalizations.of(context).barChart
: AppLocalizations.of(context).lineChart,
),
- onPressed: (c) => showAdaptiveDialog(
- 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(() {});
- },
+ onPressed: (c) {
+ if (Platform.isIOS) {
+ // iOS does not use Material widgets => no inkwell support
+ showCupertinoModalPopup(
+ context: context,
+ builder: (ctx) => CupertinoActionSheet(
+ title: Text(AppLocalizations.of(context).selectType),
+ actions: [
+ CupertinoActionSheetAction(
+ onPressed: () async {
+ final s = await SharedPreferences.getInstance();
+ await s.setInt("monthlygraph", 1);
+ _monthly = 1;
+ if (!ctx.mounted) return;
+ Navigator.of(ctx).pop();
+ setState(() {});
+ },
+ child: Text(
+ AppLocalizations.of(context).barChart,
+ textAlign: TextAlign.center,
),
),
- SizedBox(
- width: MediaQuery.of(ctx).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(() {});
- },
+ CupertinoActionSheetAction(
+ onPressed: () async {
+ final s = await SharedPreferences.getInstance();
+ await s.setInt("monthlygraph", 2);
+ _monthly = 2;
+ if (!ctx.mounted) return;
+ Navigator.of(ctx).pop();
+ setState(() {});
+ },
+ child: Text(
+ AppLocalizations.of(context).lineChart,
+ textAlign: TextAlign.center,
),
),
],
),
- ),
- ),
- ),
+ );
+ } else {
+ showAdaptiveDialog(
+ 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(() {});
+ },
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ );
+ }
+ },
),
],
),