Skip to content

Commit

Permalink
Merge pull request #32 from avuenja/12-adicionar-voltar-ao-topo
Browse files Browse the repository at this point in the history
feat(gototop): adicionado voltar ao topo, nas paginas home recentes
  • Loading branch information
avuenja committed Nov 27, 2022
2 parents f8ee1cc + 2d91b92 commit 7bef73c
Show file tree
Hide file tree
Showing 7 changed files with 77 additions and 22 deletions.
11 changes: 10 additions & 1 deletion lib/src/app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,16 @@ class App extends StatelessWidget {
child: MaterialApp(
title: 'TabNews',
debugShowCheckedModeBanner: false,
darkTheme: ThemeData.dark(),
darkTheme: ThemeData.dark().copyWith(
primaryColor: Colors.white,
colorScheme: const ColorScheme.light(
primary: Colors.white60,
secondary: Colors.white60,
),
textSelectionTheme: TextSelectionThemeData(
selectionColor: Colors.grey.shade700,
),
),
theme: ThemeData(
primaryColor: Colors.black,
colorScheme: const ColorScheme.light(
Expand Down
23 changes: 19 additions & 4 deletions lib/src/ui/layouts/tab.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,15 @@ class TabLayout extends StatefulWidget {
}

class _TabLayoutState extends State<TabLayout> {
List<ScrollController> pagesScrollController = [
ScrollController(),
ScrollController(),
];

int _currentPage = 0;
static final List<Widget> _pages = [
const HomePage(),
const RecentsPage(),
late final List<Widget> _pages = [
HomePage(scrollController: pagesScrollController[0]),
RecentsPage(scrollController: pagesScrollController[1]),
const FavoritesPage(),
Consumer<UserProvider>(
builder: (context, provider, _) =>
Expand All @@ -31,7 +36,17 @@ class _TabLayoutState extends State<TabLayout> {

void _onItemTapped(int index) {
setState(() {
_currentPage = index;
if (index != _currentPage) {
_currentPage = index;
} else {
pagesScrollController[_currentPage].animateTo(
0,
duration: const Duration(
milliseconds: 500,
),
curve: Curves.fastOutSlowIn,
);
}
});
}

Expand Down
5 changes: 4 additions & 1 deletion lib/src/ui/pages/home.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ import 'package:tabnews/src/ui/widgets/item_content.dart';
import 'package:tabnews/src/ui/widgets/progress_indicator.dart';

class HomePage extends StatefulWidget {
const HomePage({super.key});
final ScrollController scrollController;

const HomePage({super.key, required this.scrollController});

@override
State<HomePage> createState() => _HomePageState();
Expand Down Expand Up @@ -63,6 +65,7 @@ class _HomePageState extends State<HomePage> {
child: PagedListView<int, Content>(
padding: const EdgeInsets.all(10.0),
pagingController: _pagingController,
scrollController: widget.scrollController,
builderDelegate: PagedChildBuilderDelegate<Content>(
itemBuilder: (context, item, index) {
return ItemContent(index: index, content: item);
Expand Down
31 changes: 23 additions & 8 deletions lib/src/ui/pages/login.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

import 'package:tabnews/src/constants.dart';
import 'package:tabnews/src/extensions/dark_mode.dart';
import 'package:tabnews/src/providers/user.dart';
import 'package:tabnews/src/ui/pages/register.dart';
import 'package:tabnews/src/utils/navigation.dart';
Expand Down Expand Up @@ -34,11 +35,15 @@ class _LoginPageState extends State<LoginPage> {
Expanded(
child: TextFormField(
keyboardType: TextInputType.emailAddress,
cursorColor: AppColors.primaryColor,
decoration: const InputDecoration(
cursorColor: context.isDarkMode
? Colors.white
: AppColors.primaryColor,
decoration: InputDecoration(
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: AppColors.primaryColor,
color: context.isDarkMode
? Colors.white
: AppColors.primaryColor,
width: 2.0,
),
),
Expand All @@ -56,11 +61,15 @@ class _LoginPageState extends State<LoginPage> {
enableSuggestions: false,
autocorrect: false,
obscureText: true,
cursorColor: AppColors.primaryColor,
decoration: const InputDecoration(
cursorColor: context.isDarkMode
? Colors.white
: AppColors.primaryColor,
decoration: InputDecoration(
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: AppColors.primaryColor,
color: context.isDarkMode
? Colors.white
: AppColors.primaryColor,
width: 2.0,
),
),
Expand Down Expand Up @@ -116,11 +125,17 @@ class _LoginPageState extends State<LoginPage> {
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const Text('Ainda não possui conta?'),
Text(
'Ainda não possui conta?',
style:
const TextStyle().copyWith(color: Colors.grey.shade600),
),
TextButton(
style: const ButtonStyle().copyWith(
foregroundColor: MaterialStateProperty.all<Color>(
AppColors.primaryColor,
context.isDarkMode
? Colors.white
: AppColors.primaryColor,
),
),
onPressed: () => Navigation.push(context, RegisterPage()),
Expand Down
21 changes: 15 additions & 6 deletions lib/src/ui/pages/new_content.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import 'package:markdown_editable_textinput/markdown_text_input.dart';
import 'package:provider/provider.dart';

import 'package:tabnews/src/constants.dart';
import 'package:tabnews/src/extensions/dark_mode.dart';
import 'package:tabnews/src/providers/content.dart';
import 'package:tabnews/src/ui/layouts/page.dart';
import 'package:tabnews/src/ui/pages/my_contents.dart';
Expand Down Expand Up @@ -48,11 +49,15 @@ class _NewContentPageState extends State<NewContentPage> {
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
TextFormField(
cursorColor: AppColors.primaryColor,
decoration: const InputDecoration(
cursorColor: context.isDarkMode
? Colors.white
: AppColors.primaryColor,
decoration: InputDecoration(
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: AppColors.primaryColor,
color: context.isDarkMode
? Colors.white
: AppColors.primaryColor,
width: 2.0,
),
),
Expand Down Expand Up @@ -89,11 +94,15 @@ class _NewContentPageState extends State<NewContentPage> {
),
const SizedBox(height: 15.0),
TextFormField(
cursorColor: AppColors.primaryColor,
decoration: const InputDecoration(
cursorColor: context.isDarkMode
? Colors.white
: AppColors.primaryColor,
decoration: InputDecoration(
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: AppColors.primaryColor,
color: context.isDarkMode
? Colors.white
: AppColors.primaryColor,
width: 2.0,
),
),
Expand Down
5 changes: 4 additions & 1 deletion lib/src/ui/pages/recents.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ import 'package:tabnews/src/ui/widgets/item_content.dart';
import 'package:tabnews/src/ui/widgets/progress_indicator.dart';

class RecentsPage extends StatefulWidget {
const RecentsPage({super.key});
final ScrollController scrollController;

const RecentsPage({super.key, required this.scrollController});

@override
State<RecentsPage> createState() => _RecentsPageState();
Expand Down Expand Up @@ -63,6 +65,7 @@ class _RecentsPageState extends State<RecentsPage> {
child: PagedListView<int, Content>(
padding: const EdgeInsets.all(10.0),
pagingController: _pagingController,
scrollController: widget.scrollController,
builderDelegate: PagedChildBuilderDelegate<Content>(
itemBuilder: (context, item, index) {
return ItemContent(index: index, content: item);
Expand Down
3 changes: 2 additions & 1 deletion lib/src/ui/widgets/item_content.dart
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ class ItemContent extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
'${index + 1}.',
Expand Down

0 comments on commit 7bef73c

Please sign in to comment.