feat: Make licenses work better

This commit is contained in:
PapaTutuWawa 2023-07-16 18:06:31 +02:00
parent 286f705c41
commit 037fab6409
4 changed files with 372 additions and 159 deletions

View File

@ -21,7 +21,9 @@
},
"about": {
"title": "About",
"source": "Source code"
"source": "Source code",
"license": "License",
"close": "Clsoe"
},
"tooltips": {
"addNewItem": "Add new item"

File diff suppressed because it is too large Load Diff

View File

@ -2,6 +2,7 @@ import 'package:anitrack/i18n/strings.g.dart';
import 'package:anitrack/licenses.g.dart';
import 'package:anitrack/src/ui/constants.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:url_launcher/url_launcher.dart';
class AboutPage extends StatelessWidget {
@ -35,14 +36,49 @@ class AboutPage extends StatelessWidget {
'AniTrack',
style: Theme.of(context).textTheme.titleLarge,
),
ElevatedButton(
onPressed: () async {
await launchUrl(
Uri.parse('https://codeberg.org/PapaTutuWawa/anitrack'),
mode: LaunchMode.externalApplication,
);
},
child: Text(t.about.source),
Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Padding(
padding: const EdgeInsets.symmetric(horizontal: 4),
child: ElevatedButton(
onPressed: () async {
await launchUrl(
Uri.parse(
'https://codeberg.org/PapaTutuWawa/anitrack',
),
mode: LaunchMode.externalApplication,
);
},
child: Text(t.about.source),
),
),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 4),
child: ElevatedButton(
onPressed: () async {
final licenseText = await rootBundle.loadString(
'LICENSE',
);
await showDialog<void>(
context: context,
builder: (context) {
return SimpleDialog(
children: [
Padding(
padding: const EdgeInsets.all(16),
child: Text(licenseText),
),
],
);
},
);
},
child: Text(t.about.license),
),
),
],
),
],
),
@ -54,12 +90,32 @@ class AboutPage extends StatelessWidget {
return ListTile(
title: Text(dep.name),
onTap: () async {
if (dep.repository == null) return;
await launchUrl(
Uri.parse(dep.repository!),
mode: LaunchMode.externalApplication,
onTap: () {
showDialog<void>(
context: context,
builder: (context) => AlertDialog(
content: SingleChildScrollView(
child: Text(dep.license ?? ''),
),
actions: [
TextButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text(t.about.close),
),
if (dep.repository != null)
TextButton(
onPressed: () async {
await launchUrl(
Uri.parse(dep.repository!),
mode: LaunchMode.externalApplication,
);
},
child: Text(t.about.source),
),
],
),
);
},
);

View File

@ -46,6 +46,8 @@ dev_dependencies:
flutter:
uses-material-design: true
assets:
- LICENSE
flutter_icons:
android: "launcher_icon"