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": { "about": {
"title": "About", "title": "About",
"source": "Source code" "source": "Source code",
"license": "License",
"close": "Clsoe"
}, },
"tooltips": { "tooltips": {
"addNewItem": "Add new item" "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/licenses.g.dart';
import 'package:anitrack/src/ui/constants.dart'; import 'package:anitrack/src/ui/constants.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
class AboutPage extends StatelessWidget { class AboutPage extends StatelessWidget {
@ -35,14 +36,49 @@ class AboutPage extends StatelessWidget {
'AniTrack', 'AniTrack',
style: Theme.of(context).textTheme.titleLarge, style: Theme.of(context).textTheme.titleLarge,
), ),
ElevatedButton( Row(
onPressed: () async { mainAxisSize: MainAxisSize.min,
await launchUrl( mainAxisAlignment: MainAxisAlignment.center,
Uri.parse('https://codeberg.org/PapaTutuWawa/anitrack'), children: [
mode: LaunchMode.externalApplication, Padding(
); padding: const EdgeInsets.symmetric(horizontal: 4),
}, child: ElevatedButton(
child: Text(t.about.source), 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( return ListTile(
title: Text(dep.name), title: Text(dep.name),
onTap: () async { onTap: () {
if (dep.repository == null) return; showDialog<void>(
context: context,
await launchUrl( builder: (context) => AlertDialog(
Uri.parse(dep.repository!), content: SingleChildScrollView(
mode: LaunchMode.externalApplication, 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: flutter:
uses-material-design: true uses-material-design: true
assets:
- LICENSE
flutter_icons: flutter_icons:
android: "launcher_icon" android: "launcher_icon"