diff --git a/assets/release_notes.md b/assets/release_notes.md new file mode 100644 index 00000000..be9eeb77 --- /dev/null +++ b/assets/release_notes.md @@ -0,0 +1,3 @@ +## 0.1.0 (February 2021) + +- Initial app version release \ No newline at end of file diff --git a/lib/settings/release.dart b/lib/settings/release.dart new file mode 100644 index 00000000..df5c6099 --- /dev/null +++ b/lib/settings/release.dart @@ -0,0 +1,27 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_markdown/flutter_markdown.dart'; +import 'package:markdown/markdown.dart' as md; + +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + + +class ReleaseNotesWidget extends StatelessWidget { + + final String releaseNotes; + + ReleaseNotesWidget(this.releaseNotes); + + @override + Widget build (BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text("Release Notes") + ), + body: Markdown( + selectable: false, + data: releaseNotes, + ) + ); + } +} \ No newline at end of file diff --git a/lib/settings/settings.dart b/lib/settings/settings.dart index 9802b489..d12a0fee 100644 --- a/lib/settings/settings.dart +++ b/lib/settings/settings.dart @@ -1,7 +1,9 @@ import 'package:InvenTree/settings/about.dart'; import 'package:InvenTree/settings/login.dart'; +import 'package:InvenTree/settings/release.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -44,6 +46,12 @@ class _InvenTreeSettingsState extends State { leading: FaIcon(FontAwesomeIcons.infoCircle), onTap: _about, ), + ListTile( + title: Text("Release Notes"), + subtitle: Text("Display app release notes"), + leading: FaIcon(FontAwesomeIcons.fileAlt), + onTap: _releaseNotes, + ), ListTile( title: Text("Report Bug"), subtitle: Text("Report bug or suggest new feature"), @@ -70,4 +78,15 @@ class _InvenTreeSettingsState extends State { MaterialPageRoute(builder: (context) => InvenTreeAboutWidget(info))); }); } + + void _releaseNotes() async { + + // Load release notes from external file + String notes = await rootBundle.loadString("assets/release_notes.md"); + + Navigator.push( + context, + MaterialPageRoute(builder: (context) => ReleaseNotesWidget(notes)) + ); + } } \ No newline at end of file diff --git a/pubspec.lock b/pubspec.lock index 6569a05d..04026bf0 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -179,6 +179,13 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_markdown: + dependency: "direct main" + description: + name: flutter_markdown + url: "https://pub.dartlang.org" + source: hosted + version: "0.5.2" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -259,6 +266,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.16.1" + markdown: + dependency: transitive + description: + name: markdown + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0" matcher: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index ec09a4c1..ad7660c2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -11,7 +11,7 @@ description: InvenTree stock management # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 1.0.0+1 +version: 0.1.0+1 environment: sdk: ">=2.1.0 <3.0.0" @@ -39,7 +39,7 @@ dependencies: flutter_typeahead: ^1.8.1 # Auto-complete input field image_picker: ^0.6.6 # Select or take photos url_launcher: ^5.7.10 # Open link in system browser - + flutter_markdown: ^0.5.2 # Rendering markdown camera: path_provider: path: @@ -69,6 +69,7 @@ flutter: assets: - assets/image/icon.png + - assets/release_notes.md # To add assets to your application, add an assets section, like this: # assets: