From 0a80bcbb90ad670f9c784b1c200668bf6bf25837 Mon Sep 17 00:00:00 2001 From: Juan Gilsanz Polo Date: Tue, 4 Oct 2022 16:09:50 +0200 Subject: [PATCH] Added google play and github buttons --- assets/other/get_google_play.png | Bin 0 -> 13957 bytes assets/resources/github.svg | 1 + assets/resources/google-play.svg | 1 + lib/constants/strings.dart | 3 ++ lib/constants/urls.dart | 4 +++ lib/l10n/app_en.arb | 4 ++- lib/l10n/app_es.arb | 4 ++- lib/screens/settings/settings.dart | 50 ++++++++++++++++++++++++++++- pubspec.lock | 21 ++++++++++++ pubspec.yaml | 4 +++ 10 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 assets/other/get_google_play.png create mode 100644 assets/resources/github.svg create mode 100644 assets/resources/google-play.svg create mode 100644 lib/constants/strings.dart create mode 100644 lib/constants/urls.dart diff --git a/assets/other/get_google_play.png b/assets/other/get_google_play.png new file mode 100644 index 0000000000000000000000000000000000000000..c77b7464b049c7d6666155c61df5f486f241f760 GIT binary patch literal 13957 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 X%LPP+756@c3` \ No newline at end of file diff --git a/assets/resources/google-play.svg b/assets/resources/google-play.svg new file mode 100644 index 0000000..eda3968 --- /dev/null +++ b/assets/resources/google-play.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/constants/strings.dart b/lib/constants/strings.dart new file mode 100644 index 0000000..508ae04 --- /dev/null +++ b/lib/constants/strings.dart @@ -0,0 +1,3 @@ +class Strings { + static const String createdBy = "JGeek00"; +} \ No newline at end of file diff --git a/lib/constants/urls.dart b/lib/constants/urls.dart new file mode 100644 index 0000000..df19dde --- /dev/null +++ b/lib/constants/urls.dart @@ -0,0 +1,4 @@ +class Urls { + static const String playStore = "https://play.google.com/store/apps/details?id=com.jgeek00.adguard_home_manager"; + static const String gitHub = "https://github.com/JGeek00/adguard-home-manager"; +} \ No newline at end of file diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 65ebdb9..063bd5b 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -167,5 +167,7 @@ "generalSettingsDescription": "Various different settings", "hideZeroValues": "Hide zero values", "hideZeroValuesDescription": "On homescreen, hide blocks with zero value", - "webAdminPanel": "Web admin. panel" + "webAdminPanel": "Web admin. panel", + "visitGooglePlay": "Visit Google Play page", + "gitHub": "App code available on GitHub" } \ No newline at end of file diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index c9aa975..d48d952 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -167,5 +167,7 @@ "generalSettingsDescription": "Varios ajustes generales", "hideZeroValues": "Oculta valores a cero", "hideZeroValuesDescription": "En la pantalla de inicio, oculta bloqueos con valor cero", - "webAdminPanel": "Panel de admin. web" + "webAdminPanel": "Panel de admin. web", + "visitGooglePlay": "Visita la página de Google Play", + "gitHub": "Código de la app disponible en GitHub" } \ No newline at end of file diff --git a/lib/screens/settings/settings.dart b/lib/screens/settings/settings.dart index 13cbd30..1d9a18f 100644 --- a/lib/screens/settings/settings.dart +++ b/lib/screens/settings/settings.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:flutter_web_browser/flutter_web_browser.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:adguard_home_manager/screens/settings/theme_modal.dart'; @@ -9,6 +11,8 @@ import 'package:adguard_home_manager/screens/servers/servers.dart'; import 'package:adguard_home_manager/screens/settings/advanced_setings.dart'; import 'package:adguard_home_manager/screens/settings/general_settings.dart'; +import 'package:adguard_home_manager/constants/strings.dart'; +import 'package:adguard_home_manager/constants/urls.dart'; import 'package:adguard_home_manager/providers/servers_provider.dart'; import 'package:adguard_home_manager/providers/app_config_provider.dart'; @@ -58,6 +62,22 @@ class Settings extends StatelessWidget { })); } + void openWeb(String url) { + FlutterWebBrowser.openWebPage( + url: url, + customTabsOptions: const CustomTabsOptions( + instantAppsEnabled: true, + showTitle: true, + urlBarHidingEnabled: false, + ), + safariVCOptions: const SafariViewControllerOptions( + barCollapsingEnabled: true, + dismissButtonStyle: SafariViewControllerDismissButtonStyle.close, + modalPresentationCapturesStatusBarAppearance: true, + ) + ); + } + return ListView( children: [ SectionLabel(label: AppLocalizations.of(context)!.appSettings), @@ -108,8 +128,36 @@ class Settings extends StatelessWidget { ), CustomListTile( label: AppLocalizations.of(context)!.createdBy, - description: "JGeek00", + description: Strings.createdBy, ), + Padding( + padding: const EdgeInsets.all(15), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + IconButton( + onPressed: () => openWeb(Urls.playStore), + icon: SvgPicture.asset( + 'assets/resources/google-play.svg', + color: Theme.of(context).textTheme.bodyText2!.color, + width: 30, + height: 30, + ), + tooltip: AppLocalizations.of(context)!.visitGooglePlay, + ), + IconButton( + onPressed: () => openWeb(Urls.gitHub), + icon: SvgPicture.asset( + 'assets/resources/github.svg', + color: Theme.of(context).textTheme.bodyText2!.color, + width: 30, + height: 30, + ), + tooltip: AppLocalizations.of(context)!.gitHub, + ), + ], + ), + ) ], ); } diff --git a/pubspec.lock b/pubspec.lock index bfbce05..2477528 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -221,6 +221,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.2.10+1" + flutter_svg: + dependency: "direct main" + description: + name: flutter_svg + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.5" flutter_test: dependency: "direct dev" description: flutter @@ -371,6 +378,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.8.2" + path_drawing: + dependency: transitive + description: + name: path_drawing + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + path_parsing: + dependency: transitive + description: + name: path_parsing + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" petitparser: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 592c8fd..0bf174d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -46,6 +46,7 @@ dependencies: expandable: ^5.0.1 fl_chart: ^0.55.2 flutter_web_browser: ^0.17.1 + flutter_svg: ^1.1.5 dev_dependencies: flutter_test: @@ -95,6 +96,9 @@ flutter: - assets/icon/icon-android.png - assets/icon/icon-splash.png - assets/icon/icon1024-white-center.png + - assets/other/get_google_play.png + - assets/resources/github.svg + - assets/resources/google-play.svg # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware