import "package:flutter/material.dart"; import "package:flutter_markdown/flutter_markdown.dart"; import "package:inventree/app_colors.dart"; import "package:url_launcher/url_launcher.dart"; import "package:inventree/l10.dart"; import "package:inventree/helpers.dart"; class ReleaseNotesWidget extends StatelessWidget { const ReleaseNotesWidget(this.releaseNotes); final String releaseNotes; @override Widget build (BuildContext context) { return Scaffold( appBar: AppBar( title: Text(L10().releaseNotes), backgroundColor: COLOR_APP_BAR, ), body: Markdown( selectable: false, data: releaseNotes, onTapLink: (url, href, title) { var link = href ?? ""; if (link.isNotEmpty) { openLink(link); } }, ) ); } } class CreditsWidget extends StatelessWidget { const CreditsWidget(this.credits); final String credits; // Callback function when a link is clicked in the markdown Future openLink(String url) async { final link = Uri.parse(url); if (await canLaunchUrl(link)) { await launchUrl(link); } } @override Widget build (BuildContext context) { return Scaffold( appBar: AppBar( title: Text(L10().credits), backgroundColor: COLOR_APP_BAR, ), body: Markdown( selectable: false, data: credits, onTapLink: (url, href, title) { var link = href ?? ""; if (link.isNotEmpty) { openLink(link); } }, ) ); } }