From d091f810de7be8a2f0559db0667d81f2d382ec60 Mon Sep 17 00:00:00 2001 From: Vadim <44135514+vodemn@users.noreply.github.com> Date: Tue, 21 May 2024 21:32:40 +0200 Subject: [PATCH] implemented release notes dialog --- lib/l10n/intl_en.arb | 12 ++++- .../widget_dialog_release_notes.dart | 52 +++++++++++++++++++ pubspec.yaml | 2 + 3 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 lib/screens/shared/release_notes_dialog/widget_dialog_release_notes.dart diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 34247a6..0b973c9 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -119,5 +119,15 @@ "tooltipUseLightSensor": "Use lightsensor", "tooltipUseCamera": "Use camera", "tooltipOpenSettings": "Open settings", - "exposurePair": "Exposure pair" + "exposurePair": "Exposure pair", + "whatsnew": "What's new?", + "changesInVersion": "Changes in version {version}:", + "@changesInVersion": { + "placeholders": { + "version": { + "type": "String" + } + } + }, + "close": "Close" } \ No newline at end of file diff --git a/lib/screens/shared/release_notes_dialog/widget_dialog_release_notes.dart b/lib/screens/shared/release_notes_dialog/widget_dialog_release_notes.dart new file mode 100644 index 0000000..271de44 --- /dev/null +++ b/lib/screens/shared/release_notes_dialog/widget_dialog_release_notes.dart @@ -0,0 +1,52 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart' show rootBundle; +import 'package:lightmeter/generated/l10n.dart'; +import 'package:lightmeter/providers/user_preferences_provider.dart'; +import 'package:lightmeter/res/dimens.dart'; +import 'package:package_info_plus/package_info_plus.dart'; + +class ReleaseNotesDialog extends StatelessWidget { + const ReleaseNotesDialog({super.key}); + + @override + Widget build(BuildContext context) { + return AlertDialog( + title: Text(S.of(context).whatsnew), + content: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + FutureBuilder( + future: PackageInfo.fromPlatform(), + builder: (context, snapshot) => Text( + S.of(context).changesInVersion(snapshot.data?.version ?? ''), + style: Theme.of(context).textTheme.titleSmall, + ), + ), + const SizedBox(height: Dimens.grid8), + FutureBuilder( + future: loadReleaseNotes(context), + builder: (context, snapshot) => Text(snapshot.data ?? ''), + ), + ], + ), + ), + actions: [ + TextButton( + onPressed: Navigator.of(context).pop, + child: Text(S.of(context).close), + ), + ], + ); + } + + Future loadReleaseNotes(BuildContext context) async { + String path(String locale) => 'assets/release_notes/release_notes_$locale.md'; + + try { + return rootBundle.loadString(path(UserPreferencesProvider.localeOf(context).name)); + } catch (e) { + return rootBundle.loadString(path('en')); + } + } +} diff --git a/pubspec.yaml b/pubspec.yaml index b25745f..65d8e51 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -65,6 +65,8 @@ flutter: uses-material-design: true assets: - assets/camera_stub_image.jpg + - assets/release_notes/release_notes_en.md + - assets/release_notes/release_notes_ru.md flutter_intl: enabled: true