Add about screen

This commit is contained in:
Elias Projahn 2020-05-23 13:22:33 +02:00
parent 4c6358667a
commit 503d44b8c0
4 changed files with 169 additions and 0 deletions

112
lib/about_screen.dart Normal file
View file

@ -0,0 +1,112 @@
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart' as url;
import 'localizations.dart';
class AboutScreen extends StatelessWidget {
static const _email = 'mailto:johrpan@gmail.com?subject=Memor';
static const _license = 'https://www.gnu.org/licenses/gpl-3.0.html';
static const _github = 'https://github.com/johrpan/memor';
@override
Widget build(BuildContext context) {
final l10n = MemorLocalizations.of(context);
final theme = Theme.of(context);
return Scaffold(
appBar: AppBar(
title: Text(l10n.about),
),
body: ListView(
padding: const EdgeInsets.all(16.0),
children: <Widget>[
Text(
l10n.introTitle,
style: theme.textTheme.headline6,
),
SizedBox(
height: 12.0,
),
Text(l10n.intro),
SizedBox(
height: 24.0,
),
Text(
l10n.contactTitle,
style: theme.textTheme.headline6,
),
SizedBox(
height: 12.0,
),
RichText(
text: TextSpan(
style: theme.textTheme.bodyText1,
children: [
TextSpan(
text: l10n.contact1,
),
TextSpan(
text: l10n.contact2,
style: theme.textTheme.bodyText1.copyWith(
color: Colors.amber[700],
decoration: TextDecoration.underline,
),
recognizer: TapGestureRecognizer()
..onTap = () => url.launch(_email),
),
TextSpan(
text: l10n.contact3,
),
TextSpan(
text: l10n.contact4,
style: theme.textTheme.bodyText1.copyWith(
color: Colors.amber[700],
decoration: TextDecoration.underline,
),
recognizer: TapGestureRecognizer()
..onTap = () => url.launch(_github),
),
TextSpan(
text: l10n.contact5,
),
],
),
),
SizedBox(
height: 24.0,
),
Text(
l10n.licenseTitle,
style: theme.textTheme.headline6,
),
SizedBox(
height: 12.0,
),
RichText(
text: TextSpan(
style: theme.textTheme.bodyText1,
children: [
TextSpan(
text: l10n.license1,
),
TextSpan(
text: l10n.license2,
style: theme.textTheme.bodyText1.copyWith(
color: Colors.amber[700],
decoration: TextDecoration.underline,
),
recognizer: TapGestureRecognizer()
..onTap = () => url.launch(_license),
),
TextSpan(
text: l10n.license3,
),
],
),
),
],
),
);
}
}

View file

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'about_screen.dart';
import 'backend.dart';
import 'date_utils.dart';
import 'localizations.dart';
@ -31,6 +32,26 @@ class HomeScreen extends StatelessWidget {
return Scaffold(
appBar: AppBar(
title: Text(l10n.title),
actions: <Widget>[
PopupMenuButton(
itemBuilder: (context) => [
PopupMenuItem(
value: 0,
child: Text(l10n.about),
),
],
onSelected: (value) {
if (value == 0) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => AboutScreen(),
),
);
}
},
),
],
),
body: backend.loading
? Center(

View file

@ -23,6 +23,41 @@ class MemorLocalizations {
String get noReminders =>
de ? 'Keine Erinnerungen eingerichtet' : 'No reminders scheduled';
// About screen
String get about => de ? 'Über Memor' : 'About Memor';
String get introTitle => de ? 'Einführung' : 'Introduction';
String get intro => de
? 'Memor ist eine Anwendung, die Sie zu bestimmten Zeiten mit einer '
'Benachrichtigung an etwas erinnern kann. Sie wurde mit dem Ziel '
'entwickelt möglichst einfach, schlicht und elegant zu sein.'
: 'Memor is an app for getting reminders at a specified time via a '
'notification. It was developed with the goal to be as simple and '
'elegant as possible.';
String get licenseTitle => de ? 'Lizenz' : 'License';
String get license1 => '© 2020 Elias Projahn\n\n'
'This program is free software: you can redistribute it and/or modify it '
'under the terms of the GNU General Public License as published by the '
'Free Software Foundation, either version 3 of the License, or (at your '
'option) any later version.\n\nThis program is distributed in the hope '
'that it will be useful, but WITHOUT ANY WARRANTY; without even the '
'implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR '
'PURPOSE. See the ';
String get license2 => 'GNU General Public License';
String get license3 => ' for more details.';
String get contactTitle => de ? 'Kontakt' : 'Contact';
String get contact1 => de
? 'Für Fragen, Fehlermeldungen, Anregungen etc. können Sie mich gerne '
: 'Feel free to contact me ';
String get contact2 => de ? 'per E-Mail' : 'via E-mail';
String get contact3 => de
? ' kontaktieren. Memor ist freie Software. Sie können bei '
: ' for questions, bug reports, ideas etc. Memor is free software. You '
'can study the source code and contribute on ';
String get contact4 => 'GitHub';
String get contact5 =>
de ? ' den Quellcode studieren und zur Entwicklung beitragen.' : '.';
// Memo editor
String get editTitle => de ? 'Memo bearbeiten' : 'Edit memo';