From 280827d8ec1a23d8668150c171740e958d4b5213 Mon Sep 17 00:00:00 2001 From: Imran Remtulla Date: Sun, 19 Mar 2023 12:38:57 -0400 Subject: [PATCH] Changelog now rendered as MarkDown --- lib/components/generated_form.dart | 1 + lib/pages/apps.dart | 34 +++++++++++++++++++++++------- pubspec.lock | 16 ++++++++++++++ pubspec.yaml | 1 + 4 files changed, 44 insertions(+), 8 deletions(-) diff --git a/lib/components/generated_form.dart b/lib/components/generated_form.dart index a9cdfc0..a281899 100644 --- a/lib/components/generated_form.dart +++ b/lib/components/generated_form.dart @@ -476,6 +476,7 @@ class _GeneratedFormState extends State { rowItems.add(Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisSize: MainAxisSize.min, children: [ rowInput.value, ...widget.items[rowInputs.key][rowInput.key].belowWidgets diff --git a/lib/pages/apps.dart b/lib/pages/apps.dart index 8da87c2..393c2ff 100644 --- a/lib/pages/apps.dart +++ b/lib/pages/apps.dart @@ -1,6 +1,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_markdown/flutter_markdown.dart'; import 'package:obtainium/components/custom_app_bar.dart'; import 'package:obtainium/components/generated_form.dart'; import 'package:obtainium/components/generated_form_modal.dart'; @@ -14,6 +15,7 @@ import 'package:obtainium/providers/source_provider.dart'; import 'package:provider/provider.dart'; import 'package:share_plus/share_plus.dart'; import 'package:url_launcher/url_launcher_string.dart'; +import 'package:markdown/markdown.dart' as md; class AppsPage extends StatefulWidget { const AppsPage({super.key}); @@ -242,14 +244,8 @@ class AppsPageState extends State { builder: (BuildContext context) { return GeneratedFormModal( title: tr('changes'), - items: [], + items: const [], additionalWidgets: [ - Text(changeLog), - changesUrl != null - ? const SizedBox( - height: 16, - ) - : const SizedBox.shrink(), changesUrl != null ? GestureDetector( child: Text( @@ -265,7 +261,29 @@ class AppsPageState extends State { .externalApplication); }, ) - : const SizedBox.shrink() + : const SizedBox.shrink(), + changesUrl != null + ? const SizedBox( + height: 16, + ) + : const SizedBox.shrink(), + SizedBox( + width: MediaQuery.of(context).size.width, + height: + MediaQuery.of(context).size.height - + 350, + child: Markdown( + data: changeLog, + extensionSet: md.ExtensionSet( + md.ExtensionSet.gitHubFlavored + .blockSyntaxes, + [ + md.EmojiSyntax(), + ...md.ExtensionSet.gitHubFlavored + .inlineSyntaxes + ], + ), + )), ], singleNullReturnButton: tr('ok'), ); diff --git a/pubspec.lock b/pubspec.lock index 9dea795..b0b7d14 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -235,6 +235,14 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_markdown: + dependency: "direct main" + description: + name: flutter_markdown + sha256: "7b25c10de1fea883f3c4f9b8389506b54053cd00807beab69fd65c8653a2711f" + url: "https://pub.dev" + source: hosted + version: "0.6.14" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -325,6 +333,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.1" + markdown: + dependency: transitive + description: + name: markdown + sha256: b3c60dee8c2af50ad0e6e90cceba98e47718a6ee0a7a6772c77846a0cc21f78b + url: "https://pub.dev" + source: hosted + version: "7.0.1" matcher: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index e061020..932daf5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -59,6 +59,7 @@ dependencies: sqflite: ^2.2.0+3 easy_localization: ^3.0.1 android_intent_plus: ^3.1.5 + flutter_markdown: ^0.6.14 dev_dependencies: