diff --git a/assets/i18n/en.json b/assets/i18n/en.json index 3c49988e..bf0dde0b 100644 --- a/assets/i18n/en.json +++ b/assets/i18n/en.json @@ -128,5 +128,13 @@ "patchedDateHint": "{date} at {time}", "appliedPatchesLabel": "Applied Patches", "appliedPatchesHint": "{quantity} applied patches" + }, + "contributorsView": { + "widgetTitle": "Contributors", + "patcherContributors": "Patcher Contributors", + "patchesContributors": "Patches Contributors", + "integrationsContributors": "Integrations Contributors", + "cliContributors": "CLI Contributors", + "managerContributors": "Manager Contributors" } } diff --git a/lib/ui/views/contributors/contributors_view.dart b/lib/ui/views/contributors/contributors_view.dart index 49045a55..740c290c 100644 --- a/lib/ui/views/contributors/contributors_view.dart +++ b/lib/ui/views/contributors/contributors_view.dart @@ -1,6 +1,9 @@ import 'package:flutter/material.dart'; +import 'package:flutter_i18n/flutter_i18n.dart'; +import 'package:google_fonts/google_fonts.dart'; import 'package:revanced_manager/ui/views/contributors/contributors_viewmodel.dart'; import 'package:revanced_manager/ui/widgets/contributorsView/contributors_card.dart'; +import 'package:revanced_manager/ui/widgets/shared/custom_sliver_app_bar.dart'; import 'package:stacked/stacked.dart'; class ContributorsView extends StatelessWidget { @@ -12,38 +15,53 @@ class ContributorsView extends StatelessWidget { viewModelBuilder: () => ContributorsViewModel(), onModelReady: (model) => model.getContributors(), builder: (context, model, child) => Scaffold( - body: SafeArea( - child: SingleChildScrollView( - child: Column( - children: [ - ContributorsCard( - title: 'Patcher Contributors', - contributors: model.patcherContributors, - height: 60, + body: CustomScrollView( + slivers: [ + CustomSliverAppBar( + title: I18nText( + 'contributorsView.widgetTitle', + child: Text( + '', + style: GoogleFonts.inter( + color: Theme.of(context).textTheme.headline6!.color, + ), ), - ContributorsCard( - title: 'Patches Contributors', - contributors: model.patchesContributors, - height: 230, - ), - ContributorsCard( - title: 'Integrations Contributors', - contributors: model.integrationsContributors, - height: 230, - ), - ContributorsCard( - title: 'CLI Contributors', - contributors: model.cliContributors, - height: 180, - ), - ContributorsCard( - title: 'Manager Contributors', - contributors: model.managerContributors, - height: 130, - ), - ], + ), ), - ), + SliverPadding( + padding: const EdgeInsets.all(20.0), + sliver: SliverList( + delegate: SliverChildListDelegate.fixed( + [ + ContributorsCard( + title: 'contributorsView.patcherContributors', + contributors: model.patcherContributors, + ), + const SizedBox(height: 20), + ContributorsCard( + title: 'contributorsView.patchesContributors', + contributors: model.patchesContributors, + ), + const SizedBox(height: 20), + ContributorsCard( + title: 'contributorsView.integrationsContributors', + contributors: model.integrationsContributors, + ), + const SizedBox(height: 20), + ContributorsCard( + title: 'contributorsView.cliContributors', + contributors: model.cliContributors, + ), + const SizedBox(height: 20), + ContributorsCard( + title: 'contributorsView.managerContributors', + contributors: model.managerContributors, + ), + ], + ), + ), + ), + ], ), ), ); diff --git a/lib/ui/views/home/home_view.dart b/lib/ui/views/home/home_view.dart index 46c2b038..f12849b0 100644 --- a/lib/ui/views/home/home_view.dart +++ b/lib/ui/views/home/home_view.dart @@ -38,7 +38,7 @@ class HomeView extends StatelessWidget { ), ), SliverPadding( - padding: const EdgeInsets.symmetric(horizontal: 20.0), + padding: const EdgeInsets.all(20.0), sliver: SliverList( delegate: SliverChildListDelegate.fixed( [ diff --git a/lib/ui/views/installer/installer_view.dart b/lib/ui/views/installer/installer_view.dart index 55826743..b98da9f1 100644 --- a/lib/ui/views/installer/installer_view.dart +++ b/lib/ui/views/installer/installer_view.dart @@ -67,7 +67,7 @@ class InstallerView extends StatelessWidget { ), ), SliverPadding( - padding: const EdgeInsets.all(20.0).copyWith(bottom: 20.0), + padding: const EdgeInsets.all(20.0), sliver: SliverList( delegate: SliverChildListDelegate.fixed( [ diff --git a/lib/ui/views/patcher/patcher_view.dart b/lib/ui/views/patcher/patcher_view.dart index db858fb5..c7a67883 100644 --- a/lib/ui/views/patcher/patcher_view.dart +++ b/lib/ui/views/patcher/patcher_view.dart @@ -39,7 +39,7 @@ class PatcherView extends StatelessWidget { ), ), SliverPadding( - padding: const EdgeInsets.symmetric(horizontal: 20.0), + padding: const EdgeInsets.all(20.0), sliver: SliverList( delegate: SliverChildListDelegate.fixed( [ diff --git a/lib/ui/views/patches_selector/patches_selector_view.dart b/lib/ui/views/patches_selector/patches_selector_view.dart index 8087c69a..642442d2 100644 --- a/lib/ui/views/patches_selector/patches_selector_view.dart +++ b/lib/ui/views/patches_selector/patches_selector_view.dart @@ -140,16 +140,16 @@ class _PatchesSelectorViewState extends State { child: Column( children: [ Text( - "Patch options", + 'Patch options', style: GoogleFonts.inter( fontSize: 18, fontWeight: FontWeight.w600, ), ), const OptionsTextField( - hint: "App name"), + hint: 'App name'), const OptionsFilePicker( - optionName: "Choose a logo", + optionName: 'Choose a logo', ), ], ), diff --git a/lib/ui/views/settings/settings_view.dart b/lib/ui/views/settings/settings_view.dart index f4a4dd18..213c2b3a 100644 --- a/lib/ui/views/settings/settings_view.dart +++ b/lib/ui/views/settings/settings_view.dart @@ -17,7 +17,7 @@ class SettingsView extends StatelessWidget { Widget build(BuildContext context) { return ViewModelBuilder.reactive( viewModelBuilder: () => SettingsViewModel(), - builder: (context, SettingsViewModel model, child) => Scaffold( + builder: (context, model, child) => Scaffold( body: CustomScrollView( slivers: [ CustomSliverAppBar( @@ -32,10 +32,7 @@ class SettingsView extends StatelessWidget { ), ), SliverPadding( - padding: const EdgeInsets.symmetric( - vertical: 10.0, - horizontal: 20.0, - ), + padding: const EdgeInsets.all(20.0), sliver: SliverList( delegate: SliverChildListDelegate.fixed( [ diff --git a/lib/ui/widgets/appSelectorView/app_skeleton_loader.dart b/lib/ui/widgets/appSelectorView/app_skeleton_loader.dart index 193b44ec..540bdfa8 100644 --- a/lib/ui/widgets/appSelectorView/app_skeleton_loader.dart +++ b/lib/ui/widgets/appSelectorView/app_skeleton_loader.dart @@ -58,7 +58,7 @@ class AppSkeletonLoader extends StatelessWidget { ), ), child: const Center( - child: Text("Content"), + child: Text('Content'), ), ); } diff --git a/lib/ui/widgets/contributorsView/contributors_card.dart b/lib/ui/widgets/contributorsView/contributors_card.dart index 45bc38b6..2a680e20 100644 --- a/lib/ui/widgets/contributorsView/contributors_card.dart +++ b/lib/ui/widgets/contributorsView/contributors_card.dart @@ -1,19 +1,18 @@ import 'package:flutter/material.dart'; import 'package:flutter_cache_manager/file.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart'; +import 'package:flutter_i18n/flutter_i18n.dart'; import 'package:revanced_manager/ui/widgets/shared/custom_card.dart'; import 'package:url_launcher/url_launcher.dart'; class ContributorsCard extends StatefulWidget { final String title; final List contributors; - final double height; const ContributorsCard({ Key? key, required this.title, required this.contributors, - this.height = 200, }) : super(key: key); @override @@ -23,63 +22,56 @@ class ContributorsCard extends StatefulWidget { class _ContributorsCardState extends State { @override Widget build(BuildContext context) { - return Padding( - padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 20), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: const EdgeInsets.only(bottom: 8.0), - child: Text( - widget.title, - style: const TextStyle( + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.only(bottom: 8.0), + child: I18nText( + widget.title, + child: const Text( + '', + style: TextStyle( fontSize: 20, fontWeight: FontWeight.w600, ), ), ), - CustomCard( - child: GridView.builder( - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 7, - mainAxisSpacing: 8, - crossAxisSpacing: 8, - ), - itemCount: widget.contributors.length, - itemBuilder: (context, index) { - return ClipRRect( - borderRadius: BorderRadius.circular(100), - child: GestureDetector( - onTap: () => launchUrl( - Uri.parse( - widget.contributors[index]['html_url'], - ), - ), - child: FutureBuilder( - future: DefaultCacheManager().getSingleFile( - widget.contributors[index]['avatar_url'], - ), - builder: (context, snapshot) => snapshot.hasData - ? Image.file( - snapshot.data!, - height: 40, - width: 40, - ) - : Image.network( - widget.contributors[index]['avatar_url'], - height: 40, - width: 40, - ), - ), + ), + CustomCard( + child: GridView.builder( + shrinkWrap: true, + padding: EdgeInsets.zero, + physics: const NeverScrollableScrollPhysics(), + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 6, + mainAxisSpacing: 8, + crossAxisSpacing: 8, + ), + itemCount: widget.contributors.length, + itemBuilder: (context, index) => ClipRRect( + borderRadius: BorderRadius.circular(100), + child: GestureDetector( + onTap: () => launchUrl( + Uri.parse( + widget.contributors[index]['html_url'], ), - ); - }, + ), + child: FutureBuilder( + future: DefaultCacheManager().getSingleFile( + widget.contributors[index]['avatar_url'], + ), + builder: (context, snapshot) => snapshot.hasData + ? Image.file(snapshot.data!) + : Image.network( + widget.contributors[index]['avatar_url'], + ), + ), + ), ), ), - ], - ), + ), + ], ); } }