From 61bacefd369c5306f3f6562ebe6f0a89c21a18c3 Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 3 Aug 2022 11:55:46 +1000 Subject: [PATCH] Show release notes (#201) * Add function to set app locale * Setting for selecting app language - Adds requirement for "flutter_localized_locales" - Change main app to stateless * Reload entire app tree when language is changed * Update release notes * linting * Show the release notes after updating to a new app version --- lib/main.dart | 44 ++++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 191e7599..ef9b49fb 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,21 +1,21 @@ import "dart:async"; -import "package:flutter_localizations/flutter_localizations.dart"; -import "package:flutter_gen/gen_l10n/app_localizations.dart"; - import "package:flutter/material.dart"; +import "package:flutter/services.dart"; + +import "package:flutter_gen/gen_l10n/app_localizations.dart"; +import "package:flutter_localizations/flutter_localizations.dart"; import "package:flutter_localized_locales/flutter_localized_locales.dart"; import "package:one_context/one_context.dart"; import "package:package_info_plus/package_info_plus.dart"; import "package:sentry_flutter/sentry_flutter.dart"; -import "package:inventree/inventree/sentry.dart"; import "package:inventree/dsn.dart"; import "package:inventree/preferences.dart"; -import "package:inventree/widget/home.dart"; - -// Supported translations are automatically updated +import "package:inventree/inventree/sentry.dart"; import "package:inventree/l10n/supported_locales.dart"; +import "package:inventree/settings/release.dart"; +import "package:inventree/widget/home.dart"; Future main() async { @@ -82,14 +82,34 @@ class InvenTreeAppState extends State { void initState() { super.initState(); - // Load selected locale - loadDefaultLocale(); + // Run some async init tasks + runInitTasks(); } - // Load the default app locale - Future loadDefaultLocale() async { + // Run app init routines in the background + Future runInitTasks() async { + + // Set the app locale (language) Locale? locale = await InvenTreeSettingsManager().getSelectedLocale(); setLocale(locale); + + // Display release notes if this is a new version + final String version = await InvenTreeSettingsManager().getValue("recentVersion", "") as String; + + final PackageInfo info = await PackageInfo.fromPlatform(); + + if (version != info.version) { + // Save latest version to the settings database + await InvenTreeSettingsManager().setValue("recentVersion", info.version); + + // Load release notes from external file + String notes = await rootBundle.loadString("assets/release_notes.md"); + + // Show the release notes + OneContext().push( + MaterialPageRoute(builder: (context) => ReleaseNotesWidget(notes)) + ); + } } // Update the app locale @@ -123,4 +143,4 @@ class InvenTreeAppState extends State { locale: _locale, ); } -} \ No newline at end of file +}