Skip to content

Commit

Permalink
About Screen upravy (#26)
Browse files Browse the repository at this point in the history
* Fix typo

* Using markdown text with links

* Using markdown in about texts

* Prepare MarkdownText widget

* Using MarkdownText on AboutScreen

* Ad "utm_source" into links

* Update TODO

* Fix vertical content overflow

* Document changes

* change ssd url

---------

Co-authored-by: Marek Ceľuch <[email protected]>
  • Loading branch information
Matej-Hlatky and celuchmarek authored Jun 30, 2024
1 parent 3d69abe commit c22c57e
Show file tree
Hide file tree
Showing 9 changed files with 207 additions and 79 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

- Refactor Settings model
- #18 | Allow sharing signed Document even when failed to save file
- About screen - add links into "about" text
- About screen - fix vertical content overflow on smaller screens

## 2024-06-17 - v1.0.1(1)

Expand Down
4 changes: 2 additions & 2 deletions lib/l10n/app_localizations.dart
Original file line number Diff line number Diff line change
Expand Up @@ -352,13 +352,13 @@ abstract class AppLocalizations {
/// No description provided for @eidSDKLicenseText.
///
/// In sk, this message translates to:
/// **'Na komunikáciu s čipom občianskeho preukazu je použitá knižnica eID mSDK od Ministerstva vnútra Slovenskej republiky. Knižnica eID mSDK a podmienky jej použitia sú zverejnené na stránke „https://github.com/eidmsdk'**
/// **'Na komunikáciu s čipom občianskeho preukazu je použitá knižnica eID mSDK od Ministerstva vnútra Slovenskej republiky. Knižnica eID mSDK a podmienky jej použitia sú zverejnené na stránke „<https://github.com/eidmsdk>“.'**
String get eidSDKLicenseText;

/// No description provided for @aboutAuthorsText.
///
/// In sk, this message translates to:
/// **'Autormi tohto projektu sú freevision s.r.o., Služby Slovensko.Digital, s.r.o. a ďalší dobrovoľníci. Prevádzku zabezpečuje Služby Slovensko.Digital, s.r.o. Zdrojové kódy sú dpstupné na GitHub-e organizácie Slovensko.Digital.'**
/// **'Autormi tohto projektu sú [freevision s.r.o.](https://freevision.sk/?utm_source=digital.slovensko.avm), [Služby Slovensko.Digital, s.r.o.](https://ekosystem.slovensko.digital/?utm_source=digital.slovensko.avm) a ďalší dobrovoľníci. Prevádzku zabezpečuje [Služby Slovensko.Digital, s.r.o.](https://ekosystem.slovensko.digital/?utm_source=digital.slovensko.avm)\n\nZdrojové kódy sú dostupné na [GitHub-e organizácie Slovensko.Digital](https://github.com/slovensko-digital/avm-app-flutter).'**
String get aboutAuthorsText;

/// No description provided for @thirdPartyLicensesLabel.
Expand Down
4 changes: 2 additions & 2 deletions lib/l10n/app_localizations_sk.dart
Original file line number Diff line number Diff line change
Expand Up @@ -182,10 +182,10 @@ class AppLocalizationsSk extends AppLocalizations {
String get aboutTitle => 'O aplikácii';

@override
String get eidSDKLicenseText => 'Na komunikáciu s čipom občianskeho preukazu je použitá knižnica eID mSDK od Ministerstva vnútra Slovenskej republiky. Knižnica eID mSDK a podmienky jej použitia sú zverejnené na stránke „https://github.com/eidmsdk';
String get eidSDKLicenseText => 'Na komunikáciu s čipom občianskeho preukazu je použitá knižnica eID mSDK od Ministerstva vnútra Slovenskej republiky. Knižnica eID mSDK a podmienky jej použitia sú zverejnené na stránke „<https://github.com/eidmsdk>“.';

@override
String get aboutAuthorsText => 'Autormi tohto projektu sú freevision s.r.o., Služby Slovensko.Digital, s.r.o. a ďalší dobrovoľníci. Prevádzku zabezpečuje Služby Slovensko.Digital, s.r.o. Zdrojové kódy sú dpstupné na GitHub-e organizácie Slovensko.Digital.';
String get aboutAuthorsText => 'Autormi tohto projektu sú [freevision s.r.o.](https://freevision.sk/?utm_source=digital.slovensko.avm), [Služby Slovensko.Digital, s.r.o.](https://ekosystem.slovensko.digital/?utm_source=digital.slovensko.avm) a ďalší dobrovoľníci. Prevádzku zabezpečuje [Služby Slovensko.Digital, s.r.o.](https://ekosystem.slovensko.digital/?utm_source=digital.slovensko.avm)\n\nZdrojové kódy sú dostupné na [GitHub-e organizácie Slovensko.Digital](https://github.com/slovensko-digital/avm-app-flutter).';

@override
String get thirdPartyLicensesLabel => 'Licencie knižníc tretích strán';
Expand Down
4 changes: 2 additions & 2 deletions lib/l10n/app_sk.arb
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@
"termsOfServiceUrl": "https://sluzby.slovensko.digital/autogram-v-mobile/vseobecne-obchodne-podmienky",

"aboutTitle": "O aplikácii",
"eidSDKLicenseText": "Na komunikáciu s čipom občianskeho preukazu je použitá knižnica eID mSDK od Ministerstva vnútra Slovenskej republiky. Knižnica eID mSDK a podmienky jej použitia sú zverejnené na\u00A0stránke „https://github.com/eidmsdk",
"aboutAuthorsText": "Autormi tohto projektu sú freevision\u00A0s.r.o., Služby\u00A0Slovensko.Digital,\u00A0s.r.o. a ďalší dobrovoľníci. Prevádzku zabezpečuje Služby\u00A0Slovensko.Digital,\u00A0s.r.o. Zdrojové kódy sú dpstupné na GitHub-e organizácie Slovensko.Digital.",
"eidSDKLicenseText": "Na komunikáciu s čipom občianskeho preukazu je použitá knižnica eID mSDK od Ministerstva vnútra Slovenskej republiky. Knižnica eID mSDK a podmienky jej použitia sú zverejnené na\u00A0stránke „<https://github.com/eidmsdk>“.",
"aboutAuthorsText": "Autormi tohto projektu sú [freevision\u00A0s.r.o.](https://freevision.sk/?utm_source=digital.slovensko.avm), [Služby\u00A0Slovensko.Digital,\u00A0s.r.o.](https://ekosystem.slovensko.digital/?utm_source=digital.slovensko.avm) a ďalší dobrovoľníci. Prevádzku zabezpečuje [Služby\u00A0Slovensko.Digital,\u00A0s.r.o.](https://ekosystem.slovensko.digital/?utm_source=digital.slovensko.avm)\n\nZdrojové kódy sú dostupné na [GitHub-e organizácie Slovensko.Digital](https://github.com/slovensko-digital/avm-app-flutter).",
"thirdPartyLicensesLabel": "Licencie knižníc tretích strán",

"introHeading": "Nový, lepší a krajší podpisovač v mobile",
Expand Down
31 changes: 25 additions & 6 deletions lib/ui/screens/about_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,13 @@ import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
import '../../strings_context.dart';
import '../app_theme.dart';
import '../widgets/app_version_text.dart';
import '../widgets/markdown_text.dart';
import 'show_document_screen.dart';

/// Displays About.
/// Displays About appliaction:
/// - headline, version
/// - authors, eID mSDK info
/// - link to [showLicensePage]
///
/// See also:
/// - [ShowDocumentScreen]
Expand Down Expand Up @@ -44,9 +48,10 @@ class _Body extends StatelessWidget {
const SizedBox(height: 16),
const AppVersionText(),
const SizedBox(height: 16),
Text(strings.aboutAuthorsText),
MarkdownText(strings.aboutAuthorsText),
const SizedBox(height: 16),
Text(strings.eidSDKLicenseText),
MarkdownText(strings.eidSDKLicenseText),
const SizedBox(height: kButtonSpace),
const Spacer(),
TextButton(
style: TextButton.styleFrom(
Expand All @@ -58,9 +63,23 @@ class _Body extends StatelessWidget {
],
);

return Padding(
padding: kScreenMargin,
child: child,
return LayoutBuilder(
builder: (context, constraints) {
return SingleChildScrollView(
child: ConstrainedBox(
constraints: BoxConstraints(
minWidth: constraints.maxWidth,
minHeight: constraints.maxHeight,
),
child: IntrinsicHeight(
child: Padding(
padding: kScreenMargin,
child: child,
),
),
),
);
},
);
}

Expand Down
82 changes: 82 additions & 0 deletions lib/ui/widgets/markdown_text.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import 'dart:developer' as developer;

import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:url_launcher/url_launcher_string.dart';
import 'package:widgetbook/widgetbook.dart';
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;

/// Displays text formatted in Markdown.
///
/// By default, links are open in external application.
class MarkdownText extends StatelessWidget {
final String data;
final MarkdownTapLinkCallback onLinkTap;

const MarkdownText(
this.data, {
super.key,
this.onLinkTap = _defaultOnLinkTap,
});

@override
Widget build(BuildContext context) {
final colors = Theme.of(context).colorScheme;
final styleSheet = MarkdownStyleSheet(
a: TextStyle(
color: colors.primary,
fontWeight: FontWeight.bold,
//decoration: TextDecoration.underline, // UGLY :/
decorationColor: colors.primary,
),
);

return MarkdownBody(
data: data,
styleSheet: styleSheet,
onTapLink: onLinkTap,
);
}

static void _defaultOnLinkTap(String text, String? href, String title) {
if (href != null) {
launchUrlString(href, mode: LaunchMode.externalApplication);
}
}
}

@widgetbook.UseCase(
path: '[Core]',
name: '',
type: MarkdownText,
)
Widget previewMarkdownText(BuildContext context) {
final data = context.knobs.string(
label: 'Data',
initialValue: """
# Supported Markdown
## Unordered List + Text formatting
- This is normal text
- **This is bold text**
- _This is italic text_
- ~~This is striked text~~
- [Link text](https://slovensko.digital)
## Ordered List
1. Lorem ipsum dolor sit amet
2. Consectetur adipiscing elit
3. Integer molestie lorem at massa
""",
maxLines: 5,
);

return MarkdownText(
data,
onLinkTap: (String text, String? href, String title) {
developer.log("On link tap: $text -> $href");
},
);
}
Loading

0 comments on commit c22c57e

Please sign in to comment.