diff --git a/lib/presentation/views/main_menu/settings_view/licenses/license_detail_view.dart b/lib/presentation/views/main_menu/settings_view/licenses/license_detail_view.dart index 50d9d23..423c8cf 100644 --- a/lib/presentation/views/main_menu/settings_view/licenses/license_detail_view.dart +++ b/lib/presentation/views/main_menu/settings_view/licenses/license_detail_view.dart @@ -22,30 +22,54 @@ class LicenseDetailView extends StatelessWidget { Center( child: Column( children: [ - Text( - package.name, - textAlign: TextAlign.center, - style: const TextStyle( - fontSize: 24, - fontWeight: FontWeight.bold, - ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + + children: [ + Container( + margin: const EdgeInsetsGeometry.only(right: 15), + width: 60, + height: 60, + decoration: BoxDecoration( + color: CustomTheme.primaryColor.withAlpha(40), + borderRadius: BorderRadius.circular(10), + ), + child: Icon( + Icons.description, + color: CustomTheme.primaryColor, + size: 30, + ), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + package.name, + textAlign: TextAlign.left, + style: const TextStyle( + height: 0, + fontSize: 24, + fontWeight: FontWeight.bold, + ), + ), + if (package.version != null) ...[ + Text( + 'Version ${package.version}', + textAlign: TextAlign.left, + style: TextStyle( + fontSize: 14, + color: Colors.grey.shade300, + ), + ), + ], + ], + ), + ], ), - if (package.version != null) ...[ - const SizedBox(height: 8), - Text( - 'Version ${package.version}', - textAlign: TextAlign.center, - style: TextStyle( - fontSize: 14, - color: Colors.grey.shade300, - fontWeight: FontWeight.bold, - ), - ), - ], if (package.authors.isNotEmpty) ...[ const SizedBox(height: 8), - Text( + SelectableText( package.authors.join(', '), textAlign: TextAlign.center, style: TextStyle( @@ -57,7 +81,7 @@ class LicenseDetailView extends StatelessWidget { if (package.homepage != null && package.homepage!.isNotEmpty) ...[ const SizedBox(height: 4), - Text( + SelectableText( package.homepage!, textAlign: TextAlign.center, style: TextStyle( diff --git a/lib/presentation/views/main_menu/settings_view/licenses_view.dart b/lib/presentation/views/main_menu/settings_view/licenses_view.dart index 63ec7b2..603162f 100644 --- a/lib/presentation/views/main_menu/settings_view/licenses_view.dart +++ b/lib/presentation/views/main_menu/settings_view/licenses_view.dart @@ -22,7 +22,7 @@ class LicensesView extends StatelessWidget { itemBuilder: (context, index) { final package = allDependencies[index]; return Padding( - padding: const EdgeInsets.symmetric(vertical: 4, horizontal: 12), + padding: const EdgeInsets.symmetric(vertical: 4, horizontal: 8), child: LicenseTile(package: package), ); }, diff --git a/lib/presentation/views/main_menu/settings_view/settings_view.dart b/lib/presentation/views/main_menu/settings_view/settings_view.dart index c3fa850..2a5c7d2 100644 --- a/lib/presentation/views/main_menu/settings_view/settings_view.dart +++ b/lib/presentation/views/main_menu/settings_view/settings_view.dart @@ -45,7 +45,7 @@ class _SettingsViewState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( - padding: const EdgeInsets.fromLTRB(24, 0, 24, 10), + padding: const EdgeInsets.only(left: 16, bottom: 10), child: Text( textAlign: TextAlign.start, loc.menu, @@ -56,7 +56,7 @@ class _SettingsViewState extends State { ), ), Padding( - padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 10), + padding: const EdgeInsets.only(left: 16, top: 10, bottom: 10), child: Text( textAlign: TextAlign.start, loc.settings, @@ -68,7 +68,7 @@ class _SettingsViewState extends State { ), SettingsListTile( title: loc.export_data, - icon: Icons.upload_rounded, + icon: Icons.upload, suffixWidget: const Icon(Icons.arrow_forward_ios, size: 16), onPressed: () async { final String json = await DataTransferService.getAppDataAsJson( @@ -84,7 +84,7 @@ class _SettingsViewState extends State { ), SettingsListTile( title: loc.import_data, - icon: Icons.download_rounded, + icon: Icons.download, suffixWidget: const Icon(Icons.arrow_forward_ios, size: 16), onPressed: () async { final result = await DataTransferService.importData(context); @@ -94,7 +94,7 @@ class _SettingsViewState extends State { ), SettingsListTile( title: loc.delete_all_data, - icon: Icons.delete_rounded, + icon: Icons.delete, suffixWidget: const Icon(Icons.arrow_forward_ios, size: 16), onPressed: () { showDialog( @@ -127,7 +127,7 @@ class _SettingsViewState extends State { }, ), const Padding( - padding: EdgeInsets.symmetric(horizontal: 24, vertical: 10), + padding: EdgeInsets.only(left: 16, top: 10, bottom: 10), child: Text( textAlign: TextAlign.start, 'App', diff --git a/lib/presentation/widgets/tiles/license_tile.dart b/lib/presentation/widgets/tiles/license_tile.dart index 08aceba..a5d4f0c 100644 --- a/lib/presentation/widgets/tiles/license_tile.dart +++ b/lib/presentation/widgets/tiles/license_tile.dart @@ -19,32 +19,85 @@ class LicenseTile extends StatelessWidget { ); }, child: Container( - padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 12), - decoration: CustomTheme.standardBoxDecoration, + margin: const EdgeInsets.only(bottom: 8), + padding: const EdgeInsets.all(16), + decoration: CustomTheme.standardBoxDecoration.copyWith( + borderRadius: BorderRadius.circular(12), + ), child: Row( children: [ + Container( + width: 48, + height: 48, + decoration: BoxDecoration( + color: CustomTheme.primaryColor.withAlpha(40), + borderRadius: BorderRadius.circular(10), + ), + child: Icon( + Icons.description, + color: CustomTheme.primaryColor, + size: 24, + ), + ), + const SizedBox(width: 16), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - package.name, - style: const TextStyle( - fontSize: 16, - fontWeight: FontWeight.w600, - ), + Row( + children: [ + Flexible( + child: Text( + package.name, + overflow: TextOverflow.ellipsis, + maxLines: 1, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + ), + ), + ), + if (package.version != null && + package.version!.isNotEmpty) ...[ + const SizedBox(width: 12), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 2, + ), + decoration: BoxDecoration( + color: CustomTheme.onBoxColor, + borderRadius: BorderRadius.circular(6), + ), + child: Text( + 'v${package.version}', + style: TextStyle( + fontSize: 11, + color: Colors.grey.shade500, + fontWeight: FontWeight.w500, + ), + ), + ), + ], + ], ), const SizedBox(height: 4), Text( package.description, - maxLines: 1, + maxLines: 2, overflow: TextOverflow.ellipsis, - style: TextStyle(fontSize: 12, color: Colors.grey.shade400), + style: TextStyle( + fontSize: 13, + color: Colors.grey.shade400, + height: 1.3, + ), ), ], ), ), - const Icon(Icons.arrow_forward_ios, size: 16), + const SizedBox(width: 12), + // Arrow Icon + Icon(Icons.chevron_right, color: Colors.grey.shade600, size: 24), ], ), ), diff --git a/lib/presentation/widgets/tiles/settings_list_tile.dart b/lib/presentation/widgets/tiles/settings_list_tile.dart index 7fb0f80..d54f13f 100644 --- a/lib/presentation/widgets/tiles/settings_list_tile.dart +++ b/lib/presentation/widgets/tiles/settings_list_tile.dart @@ -47,13 +47,26 @@ class SettingsListTile extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ Container( + width: 48, + height: 48, + decoration: BoxDecoration( + color: CustomTheme.primaryColor.withAlpha(40), + borderRadius: BorderRadius.circular(10), + ), + child: Icon( + icon, + size: 28, + color: CustomTheme.primaryColor.withGreen(40), + ), + ), + /* Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( color: CustomTheme.primaryColor, shape: BoxShape.circle, ), child: Icon(icon, size: 24), - ), + ),*/ const SizedBox(width: 16), Text(title, style: const TextStyle(fontSize: 18)), ], diff --git a/pubspec.yaml b/pubspec.yaml index d1c9538..bb8181d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: game_tracker description: "Game Tracking App for Card Games" publish_to: 'none' -version: 0.0.4+122 +version: 0.0.5+127 environment: sdk: ^3.8.1