fix: Add a SliverAppBar to Contributors view and increase app bars bottom padding

This commit is contained in:
Alberto Ponces 2022-09-12 17:30:44 +01:00
parent f67425cde3
commit 779b659108
9 changed files with 108 additions and 93 deletions

View File

@ -128,5 +128,13 @@
"patchedDateHint": "{date} at {time}", "patchedDateHint": "{date} at {time}",
"appliedPatchesLabel": "Applied Patches", "appliedPatchesLabel": "Applied Patches",
"appliedPatchesHint": "{quantity} applied patches" "appliedPatchesHint": "{quantity} applied patches"
},
"contributorsView": {
"widgetTitle": "Contributors",
"patcherContributors": "Patcher Contributors",
"patchesContributors": "Patches Contributors",
"integrationsContributors": "Integrations Contributors",
"cliContributors": "CLI Contributors",
"managerContributors": "Manager Contributors"
} }
} }

View File

@ -1,6 +1,9 @@
import 'package:flutter/material.dart'; 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/views/contributors/contributors_viewmodel.dart';
import 'package:revanced_manager/ui/widgets/contributorsView/contributors_card.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'; import 'package:stacked/stacked.dart';
class ContributorsView extends StatelessWidget { class ContributorsView extends StatelessWidget {
@ -12,39 +15,54 @@ class ContributorsView extends StatelessWidget {
viewModelBuilder: () => ContributorsViewModel(), viewModelBuilder: () => ContributorsViewModel(),
onModelReady: (model) => model.getContributors(), onModelReady: (model) => model.getContributors(),
builder: (context, model, child) => Scaffold( builder: (context, model, child) => Scaffold(
body: SafeArea( body: CustomScrollView(
child: SingleChildScrollView( slivers: <Widget>[
child: Column( CustomSliverAppBar(
children: <Widget>[ title: I18nText(
'contributorsView.widgetTitle',
child: Text(
'',
style: GoogleFonts.inter(
color: Theme.of(context).textTheme.headline6!.color,
),
),
),
),
SliverPadding(
padding: const EdgeInsets.all(20.0),
sliver: SliverList(
delegate: SliverChildListDelegate.fixed(
<Widget>[
ContributorsCard( ContributorsCard(
title: 'Patcher Contributors', title: 'contributorsView.patcherContributors',
contributors: model.patcherContributors, contributors: model.patcherContributors,
height: 60,
), ),
const SizedBox(height: 20),
ContributorsCard( ContributorsCard(
title: 'Patches Contributors', title: 'contributorsView.patchesContributors',
contributors: model.patchesContributors, contributors: model.patchesContributors,
height: 230,
), ),
const SizedBox(height: 20),
ContributorsCard( ContributorsCard(
title: 'Integrations Contributors', title: 'contributorsView.integrationsContributors',
contributors: model.integrationsContributors, contributors: model.integrationsContributors,
height: 230,
), ),
const SizedBox(height: 20),
ContributorsCard( ContributorsCard(
title: 'CLI Contributors', title: 'contributorsView.cliContributors',
contributors: model.cliContributors, contributors: model.cliContributors,
height: 180,
), ),
const SizedBox(height: 20),
ContributorsCard( ContributorsCard(
title: 'Manager Contributors', title: 'contributorsView.managerContributors',
contributors: model.managerContributors, contributors: model.managerContributors,
height: 130,
), ),
], ],
), ),
), ),
), ),
],
),
), ),
); );
} }

View File

@ -38,7 +38,7 @@ class HomeView extends StatelessWidget {
), ),
), ),
SliverPadding( SliverPadding(
padding: const EdgeInsets.symmetric(horizontal: 20.0), padding: const EdgeInsets.all(20.0),
sliver: SliverList( sliver: SliverList(
delegate: SliverChildListDelegate.fixed( delegate: SliverChildListDelegate.fixed(
<Widget>[ <Widget>[

View File

@ -67,7 +67,7 @@ class InstallerView extends StatelessWidget {
), ),
), ),
SliverPadding( SliverPadding(
padding: const EdgeInsets.all(20.0).copyWith(bottom: 20.0), padding: const EdgeInsets.all(20.0),
sliver: SliverList( sliver: SliverList(
delegate: SliverChildListDelegate.fixed( delegate: SliverChildListDelegate.fixed(
<Widget>[ <Widget>[

View File

@ -39,7 +39,7 @@ class PatcherView extends StatelessWidget {
), ),
), ),
SliverPadding( SliverPadding(
padding: const EdgeInsets.symmetric(horizontal: 20.0), padding: const EdgeInsets.all(20.0),
sliver: SliverList( sliver: SliverList(
delegate: SliverChildListDelegate.fixed( delegate: SliverChildListDelegate.fixed(
<Widget>[ <Widget>[

View File

@ -140,16 +140,16 @@ class _PatchesSelectorViewState extends State<PatchesSelectorView> {
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
Text( Text(
"Patch options", 'Patch options',
style: GoogleFonts.inter( style: GoogleFonts.inter(
fontSize: 18, fontSize: 18,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
), ),
), ),
const OptionsTextField( const OptionsTextField(
hint: "App name"), hint: 'App name'),
const OptionsFilePicker( const OptionsFilePicker(
optionName: "Choose a logo", optionName: 'Choose a logo',
), ),
], ],
), ),

View File

@ -17,7 +17,7 @@ class SettingsView extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ViewModelBuilder<SettingsViewModel>.reactive( return ViewModelBuilder<SettingsViewModel>.reactive(
viewModelBuilder: () => SettingsViewModel(), viewModelBuilder: () => SettingsViewModel(),
builder: (context, SettingsViewModel model, child) => Scaffold( builder: (context, model, child) => Scaffold(
body: CustomScrollView( body: CustomScrollView(
slivers: <Widget>[ slivers: <Widget>[
CustomSliverAppBar( CustomSliverAppBar(
@ -32,10 +32,7 @@ class SettingsView extends StatelessWidget {
), ),
), ),
SliverPadding( SliverPadding(
padding: const EdgeInsets.symmetric( padding: const EdgeInsets.all(20.0),
vertical: 10.0,
horizontal: 20.0,
),
sliver: SliverList( sliver: SliverList(
delegate: SliverChildListDelegate.fixed( delegate: SliverChildListDelegate.fixed(
<Widget>[ <Widget>[

View File

@ -58,7 +58,7 @@ class AppSkeletonLoader extends StatelessWidget {
), ),
), ),
child: const Center( child: const Center(
child: Text("Content"), child: Text('Content'),
), ),
); );
} }

View File

@ -1,19 +1,18 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_cache_manager/file.dart'; import 'package:flutter_cache_manager/file.dart';
import 'package:flutter_cache_manager/flutter_cache_manager.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:revanced_manager/ui/widgets/shared/custom_card.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
class ContributorsCard extends StatefulWidget { class ContributorsCard extends StatefulWidget {
final String title; final String title;
final List<dynamic> contributors; final List<dynamic> contributors;
final double height;
const ContributorsCard({ const ContributorsCard({
Key? key, Key? key,
required this.title, required this.title,
required this.contributors, required this.contributors,
this.height = 200,
}) : super(key: key); }) : super(key: key);
@override @override
@ -23,33 +22,34 @@ class ContributorsCard extends StatefulWidget {
class _ContributorsCardState extends State<ContributorsCard> { class _ContributorsCardState extends State<ContributorsCard> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Padding( return Column(
padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Padding( Padding(
padding: const EdgeInsets.only(bottom: 8.0), padding: const EdgeInsets.only(bottom: 8.0),
child: Text( child: I18nText(
widget.title, widget.title,
style: const TextStyle( child: const Text(
'',
style: TextStyle(
fontSize: 20, fontSize: 20,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
), ),
), ),
), ),
),
CustomCard( CustomCard(
child: GridView.builder( child: GridView.builder(
shrinkWrap: true, shrinkWrap: true,
padding: EdgeInsets.zero,
physics: const NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 7, crossAxisCount: 6,
mainAxisSpacing: 8, mainAxisSpacing: 8,
crossAxisSpacing: 8, crossAxisSpacing: 8,
), ),
itemCount: widget.contributors.length, itemCount: widget.contributors.length,
itemBuilder: (context, index) { itemBuilder: (context, index) => ClipRRect(
return ClipRRect(
borderRadius: BorderRadius.circular(100), borderRadius: BorderRadius.circular(100),
child: GestureDetector( child: GestureDetector(
onTap: () => launchUrl( onTap: () => launchUrl(
@ -62,24 +62,16 @@ class _ContributorsCardState extends State<ContributorsCard> {
widget.contributors[index]['avatar_url'], widget.contributors[index]['avatar_url'],
), ),
builder: (context, snapshot) => snapshot.hasData builder: (context, snapshot) => snapshot.hasData
? Image.file( ? Image.file(snapshot.data!)
snapshot.data!,
height: 40,
width: 40,
)
: Image.network( : Image.network(
widget.contributors[index]['avatar_url'], widget.contributors[index]['avatar_url'],
height: 40,
width: 40,
), ),
), ),
), ),
); ),
},
), ),
), ),
], ],
),
); );
} }
} }