mirror of
https://github.com/DefinedNet/mobile_nebula.git
synced 2025-01-27 07:37:03 +00:00
Add licenses page (#227)
* Add licenses page * Use PlatformListTile * Use platform-specific icons * More style fixes * Switch back to using SimplePage * Make title widget const * Remove unused imports
This commit is contained in:
parent
21d8265f42
commit
5afc1ef692
8 changed files with 114 additions and 4 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -45,6 +45,7 @@ lib/generated_plugin_registrant.dart
|
|||
/env.sh
|
||||
/lib/gen.versions.dart
|
||||
/lib/.gen.versions.dart
|
||||
/lib/oss_licenses.dart
|
||||
/ios/Flutter/.last_build_id
|
||||
/local.properties
|
||||
/.gradle/
|
||||
|
|
|
@ -50,3 +50,6 @@ cd ..
|
|||
# Try and avoid issues with building by moving into place after we are complete
|
||||
#TODO: this might be a parallel build of deps issue in kotlin, might need to solve there
|
||||
mv lib/.gen.versions.dart lib/gen.versions.dart
|
||||
|
||||
# Generate licenses library
|
||||
flutter pub run flutter_oss_licenses:generate.dart
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_platform_widgets/flutter_platform_widgets.dart';
|
||||
import 'package:mobile_nebula/services/utils.dart';
|
||||
import 'package:pull_to_refresh/pull_to_refresh.dart';
|
||||
|
||||
enum SimpleScrollable {
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
import 'dart:io';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ import 'package:mobile_nebula/components/config/ConfigItem.dart';
|
|||
import 'package:mobile_nebula/components/config/ConfigPageItem.dart';
|
||||
import 'package:mobile_nebula/components/config/ConfigSection.dart';
|
||||
import 'package:mobile_nebula/gen.versions.dart';
|
||||
import 'package:mobile_nebula/screens/LicensesScreen.dart';
|
||||
import 'package:mobile_nebula/services/utils.dart';
|
||||
import 'package:package_info_plus/package_info_plus.dart';
|
||||
|
||||
|
@ -68,7 +69,12 @@ class _AboutScreenState extends State<AboutScreen> {
|
|||
label: Text('Privacy policy'),
|
||||
labelWidth: 300,
|
||||
onPressed: () => Utils.launchUrl('https://www.defined.net/privacy/', context)),
|
||||
// ConfigPageItem(label: Text('Licenses'), labelWidth: 300, onPressed: () => Utils.launchUrl('https://defined.net/mobile/license', context)),
|
||||
ConfigPageItem(
|
||||
label: Text('Licenses'),
|
||||
labelWidth: 300,
|
||||
onPressed: () => Utils.openPage(context, (context) {
|
||||
return LicensesScreen();
|
||||
})),
|
||||
]),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(top: 20),
|
||||
|
|
78
lib/screens/LicensesScreen.dart
Normal file
78
lib/screens/LicensesScreen.dart
Normal file
|
@ -0,0 +1,78 @@
|
|||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_platform_widgets/flutter_platform_widgets.dart';
|
||||
import 'package:mobile_nebula/components/SimplePage.dart';
|
||||
import 'package:mobile_nebula/services/utils.dart';
|
||||
import '../../oss_licenses.dart';
|
||||
|
||||
String capitalize(String input) {
|
||||
return input[0].toUpperCase() + input.substring(1);
|
||||
}
|
||||
|
||||
class LicensesScreen extends StatelessWidget {
|
||||
const LicensesScreen({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SimplePage(
|
||||
title: const Text("Licences"),
|
||||
scrollable: SimpleScrollable.none,
|
||||
child: ListView.builder(
|
||||
itemCount: allDependencies.length,
|
||||
itemBuilder: (_, index) {
|
||||
var dep = allDependencies[index];
|
||||
return Padding(
|
||||
padding: const EdgeInsets.all(8),
|
||||
child: PlatformListTile(
|
||||
onTap: () {
|
||||
Utils.openPage(
|
||||
context,
|
||||
(_) => LicenceDetailPage(
|
||||
title: capitalize(dep.name),
|
||||
licence: dep.license!,
|
||||
),
|
||||
);
|
||||
},
|
||||
title: Text(
|
||||
capitalize(dep.name),
|
||||
),
|
||||
subtitle: Text(dep.description),
|
||||
trailing: Icon(context.platformIcons.forward, size: 18)),
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
//detail page for the licence
|
||||
class LicenceDetailPage extends StatelessWidget {
|
||||
final String title, licence;
|
||||
const LicenceDetailPage({super.key, required this.title, required this.licence});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SimplePage(
|
||||
title: Text(title),
|
||||
scrollable: SimpleScrollable.none,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Container(
|
||||
padding: const EdgeInsets.all(5),
|
||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(8)),
|
||||
child: SingleChildScrollView(
|
||||
physics: const BouncingScrollPhysics(),
|
||||
child: Column(
|
||||
children: [
|
||||
Text(
|
||||
licence,
|
||||
style: const TextStyle(fontSize: 15),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
24
pubspec.lock
24
pubspec.lock
|
@ -89,6 +89,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.8"
|
||||
dart_pubspec_licenses:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: dart_pubspec_licenses
|
||||
sha256: "23ddb78ff9204d08e3109ced67cd3c6c6a066f581b0edf5ee092fc3e1127f4ea"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.4"
|
||||
fake_async:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -134,6 +142,14 @@ packages:
|
|||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.0"
|
||||
flutter_oss_licenses:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: flutter_oss_licenses
|
||||
sha256: e4bbaeb00bc768e8430ee0c95ad304d2f256fb15194d30b912cea269871c8885
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.4"
|
||||
flutter_platform_widgets:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -216,6 +232,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.19.0"
|
||||
json_annotation:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: json_annotation
|
||||
sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.9.0"
|
||||
leak_tracker:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
|
@ -41,6 +41,7 @@ dependencies:
|
|||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
flutter_oss_licenses: ^3.0.4
|
||||
|
||||
|
||||
# For information on the generic Dart part of this file, see the
|
||||
|
|
Loading…
Reference in a new issue