Reordered views

This commit is contained in:
2025-08-05 14:28:18 +02:00
parent 344aa970cd
commit 07906d61dd
14 changed files with 17 additions and 17 deletions

View File

@@ -0,0 +1,93 @@
import 'package:cabo_counter/core/constants.dart';
import 'package:cabo_counter/l10n/generated/app_localizations.dart';
import 'package:cabo_counter/presentation/views/about/licenses/license_view.dart';
import 'package:cabo_counter/services/version_service.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:url_launcher/url_launcher.dart';
class AboutView extends StatelessWidget {
const AboutView({super.key});
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
resizeToAvoidBottomInset: false,
navigationBar: CupertinoNavigationBar(
middle: Text(AppLocalizations.of(context).about),
),
child: SafeArea(
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Padding(
padding: const EdgeInsets.fromLTRB(0, 10, 0, 0),
child: Text(
AppLocalizations.of(context).app_name,
style: const TextStyle(
fontSize: 30,
fontWeight: FontWeight.bold,
),
),
),
Text(
'${AppLocalizations.of(context).app_version} ${VersionService.getVersionWithBuild()}',
style: TextStyle(fontSize: 15, color: Colors.grey[300]),
),
Padding(
padding:
const EdgeInsets.symmetric(horizontal: 20, vertical: 15),
child: SizedBox(
height: 200,
child: Image.asset('assets/cabo_counter-logo_rounded.png'),
)),
CupertinoButton(
sizeStyle: CupertinoButtonSize.medium,
padding: EdgeInsets.zero,
child: Text(AppLocalizations.of(context).privacy_policy),
onPressed: () =>
launchUrl(Uri.parse(Constants.kPrivacyPolicyLink)),
),
CupertinoButton(
sizeStyle: CupertinoButtonSize.medium,
padding: EdgeInsets.zero,
child: Text(AppLocalizations.of(context).imprint),
onPressed: () => launchUrl(Uri.parse(Constants.kImprintLink)),
),
CupertinoButton(
sizeStyle: CupertinoButtonSize.medium,
padding: EdgeInsets.zero,
child: Text(AppLocalizations.of(context).licenses),
onPressed: () => Navigator.push(context,
CupertinoPageRoute(builder: (_) => const LicenseView()))),
const SizedBox(
height: 10,
),
const Text(
'\u00A9 Felix Kirchner',
style: TextStyle(fontSize: 16),
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
IconButton(
onPressed: () =>
launchUrl(Uri.parse(Constants.kInstagramLink)),
icon: const Icon(FontAwesomeIcons.instagram)),
IconButton(
onPressed: () =>
launchUrl(Uri.parse('mailto:${Constants.kEmail}')),
icon: const Icon(CupertinoIcons.envelope)),
IconButton(
onPressed: () =>
launchUrl(Uri.parse(Constants.kGithubLink)),
icon: const Icon(FontAwesomeIcons.github)),
],
),
],
),
)));
}
}

View File

@@ -0,0 +1,57 @@
import 'package:cabo_counter/core/custom_theme.dart';
import 'package:cabo_counter/l10n/generated/app_localizations.dart'
show AppLocalizations;
import 'package:flutter/cupertino.dart';
class LicenseDetailView extends StatelessWidget {
final String title, license;
const LicenseDetailView(
{super.key, required this.title, required this.license});
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: Text(
AppLocalizations.of(context).license_details,
),
),
child: SafeArea(
child: SingleChildScrollView(
physics: const BouncingScrollPhysics(),
child: Column(
children: [
Padding(
padding:
const EdgeInsets.symmetric(vertical: 8, horizontal: 12),
child: FittedBox(
fit: BoxFit.fill,
child: Text(
title,
textAlign: TextAlign.center,
style: const TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
),
),
),
),
Container(
margin: const EdgeInsets.all(8),
padding:
const EdgeInsets.symmetric(vertical: 12, horizontal: 16),
decoration: BoxDecoration(
color: CustomTheme.buttonBackgroundColor,
borderRadius: BorderRadius.circular(16)),
child: Text(
license,
style: const TextStyle(fontSize: 15),
),
)
],
),
),
),
);
}
}

View File

@@ -0,0 +1,59 @@
import 'package:cabo_counter/core/custom_theme.dart';
import 'package:cabo_counter/l10n/generated/app_localizations.dart';
import 'package:cabo_counter/presentation/views/about/licenses/license_detail_view.dart';
import 'package:cabo_counter/presentation/views/about/licenses/oss_licenses.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
class LicenseView extends StatelessWidget {
const LicenseView({super.key});
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: Text(AppLocalizations.of(context).licenses),
),
child: SafeArea(
child: ListView.builder(
physics: const BouncingScrollPhysics(),
itemCount: ossLicenses.length,
itemBuilder: (_, index) {
return Padding(
padding: const EdgeInsets.symmetric(vertical: 4, horizontal: 4),
child: Container(
decoration: BoxDecoration(
color: Theme.of(context).cardColor,
borderRadius: BorderRadius.circular(8),
),
child: CupertinoListTile(
backgroundColor: CustomTheme.backgroundColor,
onTap: () {
Navigator.push(
context,
CupertinoPageRoute(
builder: (_) => LicenseDetailView(
title: ossLicenses[index].name[0].toUpperCase() +
ossLicenses[index].name.substring(1),
license: ossLicenses[index].license!,
),
),
);
},
trailing: const CupertinoListTileChevron(),
title: Text(
ossLicenses[index].name[0].toUpperCase() +
ossLicenses[index].name.substring(1),
style: GoogleFonts.roboto(),
),
subtitle: Text(ossLicenses[index].description),
),
),
);
},
),
),
);
}
}

File diff suppressed because it is too large Load Diff