Refactored skeleton widgets to own
This commit is contained in:
@@ -4,6 +4,7 @@ import 'package:game_tracker/core/enums.dart';
|
|||||||
import 'package:game_tracker/data/db/database.dart';
|
import 'package:game_tracker/data/db/database.dart';
|
||||||
import 'package:game_tracker/data/dto/group.dart';
|
import 'package:game_tracker/data/dto/group.dart';
|
||||||
import 'package:game_tracker/data/dto/player.dart';
|
import 'package:game_tracker/data/dto/player.dart';
|
||||||
|
import 'package:game_tracker/presentation/widgets/app_skeleton.dart';
|
||||||
import 'package:game_tracker/presentation/widgets/buttons/custom_width_button.dart';
|
import 'package:game_tracker/presentation/widgets/buttons/custom_width_button.dart';
|
||||||
import 'package:game_tracker/presentation/widgets/custom_search_bar.dart';
|
import 'package:game_tracker/presentation/widgets/custom_search_bar.dart';
|
||||||
import 'package:game_tracker/presentation/widgets/text_input_field.dart';
|
import 'package:game_tracker/presentation/widgets/text_input_field.dart';
|
||||||
@@ -11,7 +12,6 @@ import 'package:game_tracker/presentation/widgets/tiles/text_icon_list_tile.dart
|
|||||||
import 'package:game_tracker/presentation/widgets/tiles/text_icon_tile.dart';
|
import 'package:game_tracker/presentation/widgets/tiles/text_icon_tile.dart';
|
||||||
import 'package:game_tracker/presentation/widgets/top_centered_message.dart';
|
import 'package:game_tracker/presentation/widgets/top_centered_message.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:skeletonizer/skeletonizer.dart';
|
|
||||||
|
|
||||||
class CreateGroupView extends StatefulWidget {
|
class CreateGroupView extends StatefulWidget {
|
||||||
const CreateGroupView({super.key});
|
const CreateGroupView({super.key});
|
||||||
@@ -228,24 +228,8 @@ class _CreateGroupViewState extends State<CreateGroupView> {
|
|||||||
snapshot.connectionState ==
|
snapshot.connectionState ==
|
||||||
ConnectionState.waiting;
|
ConnectionState.waiting;
|
||||||
return Expanded(
|
return Expanded(
|
||||||
child: Skeletonizer(
|
child: AppSkeleton(
|
||||||
effect: PulseEffect(
|
|
||||||
from: Colors.grey[800]!,
|
|
||||||
to: Colors.grey[600]!,
|
|
||||||
duration: const Duration(milliseconds: 800),
|
|
||||||
),
|
|
||||||
enabled: isLoading,
|
enabled: isLoading,
|
||||||
enableSwitchAnimation: true,
|
|
||||||
switchAnimationConfig:
|
|
||||||
const SwitchAnimationConfig(
|
|
||||||
duration: Duration(milliseconds: 200),
|
|
||||||
switchInCurve: Curves.linear,
|
|
||||||
switchOutCurve: Curves.linear,
|
|
||||||
transitionBuilder: AnimatedSwitcher
|
|
||||||
.defaultTransitionBuilder,
|
|
||||||
layoutBuilder:
|
|
||||||
AnimatedSwitcher.defaultLayoutBuilder,
|
|
||||||
),
|
|
||||||
child: Visibility(
|
child: Visibility(
|
||||||
visible:
|
visible:
|
||||||
(suggestedPlayers.isEmpty &&
|
(suggestedPlayers.isEmpty &&
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ import 'package:game_tracker/data/db/database.dart';
|
|||||||
import 'package:game_tracker/data/dto/group.dart';
|
import 'package:game_tracker/data/dto/group.dart';
|
||||||
import 'package:game_tracker/data/dto/player.dart';
|
import 'package:game_tracker/data/dto/player.dart';
|
||||||
import 'package:game_tracker/presentation/views/main_menu/create_group_view.dart';
|
import 'package:game_tracker/presentation/views/main_menu/create_group_view.dart';
|
||||||
|
import 'package:game_tracker/presentation/widgets/app_skeleton.dart';
|
||||||
import 'package:game_tracker/presentation/widgets/buttons/custom_width_button.dart';
|
import 'package:game_tracker/presentation/widgets/buttons/custom_width_button.dart';
|
||||||
import 'package:game_tracker/presentation/widgets/tiles/group_tile.dart';
|
import 'package:game_tracker/presentation/widgets/tiles/group_tile.dart';
|
||||||
import 'package:game_tracker/presentation/widgets/top_centered_message.dart';
|
import 'package:game_tracker/presentation/widgets/top_centered_message.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:skeletonizer/skeletonizer.dart';
|
|
||||||
|
|
||||||
class GroupsView extends StatefulWidget {
|
class GroupsView extends StatefulWidget {
|
||||||
const GroupsView({super.key});
|
const GroupsView({super.key});
|
||||||
@@ -75,22 +75,8 @@ class _GroupsViewState extends State<GroupsView> {
|
|||||||
final List<Group> groups =
|
final List<Group> groups =
|
||||||
isLoading ? skeletonData : (snapshot.data ?? [])
|
isLoading ? skeletonData : (snapshot.data ?? [])
|
||||||
..sort((a, b) => b.createdAt.compareTo(a.createdAt));
|
..sort((a, b) => b.createdAt.compareTo(a.createdAt));
|
||||||
return Skeletonizer(
|
return AppSkeleton(
|
||||||
effect: PulseEffect(
|
|
||||||
from: Colors.grey[800]!,
|
|
||||||
to: Colors.grey[600]!,
|
|
||||||
duration: const Duration(milliseconds: 800),
|
|
||||||
),
|
|
||||||
enabled: isLoading,
|
enabled: isLoading,
|
||||||
enableSwitchAnimation: true,
|
|
||||||
switchAnimationConfig: const SwitchAnimationConfig(
|
|
||||||
duration: Duration(milliseconds: 200),
|
|
||||||
switchInCurve: Curves.linear,
|
|
||||||
switchOutCurve: Curves.linear,
|
|
||||||
transitionBuilder:
|
|
||||||
AnimatedSwitcher.defaultTransitionBuilder,
|
|
||||||
layoutBuilder: AnimatedSwitcher.defaultLayoutBuilder,
|
|
||||||
),
|
|
||||||
child: ListView.builder(
|
child: ListView.builder(
|
||||||
padding: const EdgeInsets.only(bottom: 85),
|
padding: const EdgeInsets.only(bottom: 85),
|
||||||
itemCount: groups.length + 1,
|
itemCount: groups.length + 1,
|
||||||
|
|||||||
@@ -3,12 +3,12 @@ import 'package:game_tracker/data/db/database.dart';
|
|||||||
import 'package:game_tracker/data/dto/game.dart';
|
import 'package:game_tracker/data/dto/game.dart';
|
||||||
import 'package:game_tracker/data/dto/group.dart';
|
import 'package:game_tracker/data/dto/group.dart';
|
||||||
import 'package:game_tracker/data/dto/player.dart';
|
import 'package:game_tracker/data/dto/player.dart';
|
||||||
|
import 'package:game_tracker/presentation/widgets/app_skeleton.dart';
|
||||||
import 'package:game_tracker/presentation/widgets/buttons/quick_create_button.dart';
|
import 'package:game_tracker/presentation/widgets/buttons/quick_create_button.dart';
|
||||||
import 'package:game_tracker/presentation/widgets/tiles/game_tile.dart';
|
import 'package:game_tracker/presentation/widgets/tiles/game_tile.dart';
|
||||||
import 'package:game_tracker/presentation/widgets/tiles/info_tile.dart';
|
import 'package:game_tracker/presentation/widgets/tiles/info_tile.dart';
|
||||||
import 'package:game_tracker/presentation/widgets/tiles/quick_info_tile.dart';
|
import 'package:game_tracker/presentation/widgets/tiles/quick_info_tile.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:skeletonizer/skeletonizer.dart';
|
|
||||||
|
|
||||||
class HomeView extends StatefulWidget {
|
class HomeView extends StatefulWidget {
|
||||||
const HomeView({super.key});
|
const HomeView({super.key});
|
||||||
@@ -62,30 +62,8 @@ class _HomeViewState extends State<HomeView> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return LayoutBuilder(
|
return LayoutBuilder(
|
||||||
builder: (BuildContext context, BoxConstraints constraints) {
|
builder: (BuildContext context, BoxConstraints constraints) {
|
||||||
return Skeletonizer(
|
return AppSkeleton(
|
||||||
effect: PulseEffect(
|
|
||||||
from: Colors.grey[800]!,
|
|
||||||
to: Colors.grey[600]!,
|
|
||||||
duration: const Duration(milliseconds: 800),
|
|
||||||
),
|
|
||||||
enabled: isLoading,
|
enabled: isLoading,
|
||||||
enableSwitchAnimation: true,
|
|
||||||
switchAnimationConfig: SwitchAnimationConfig(
|
|
||||||
duration: const Duration(milliseconds: 200),
|
|
||||||
switchInCurve: Curves.linear,
|
|
||||||
switchOutCurve: Curves.linear,
|
|
||||||
transitionBuilder: AnimatedSwitcher.defaultTransitionBuilder,
|
|
||||||
layoutBuilder:
|
|
||||||
(Widget? currentChild, List<Widget> previousChildren) {
|
|
||||||
return Stack(
|
|
||||||
alignment: Alignment.topCenter,
|
|
||||||
children: [
|
|
||||||
...previousChildren,
|
|
||||||
if (currentChild != null) currentChild,
|
|
||||||
],
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
child: SingleChildScrollView(
|
child: SingleChildScrollView(
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:game_tracker/data/db/database.dart';
|
import 'package:game_tracker/data/db/database.dart';
|
||||||
import 'package:game_tracker/data/dto/game.dart';
|
import 'package:game_tracker/data/dto/game.dart';
|
||||||
import 'package:game_tracker/data/dto/player.dart';
|
import 'package:game_tracker/data/dto/player.dart';
|
||||||
|
import 'package:game_tracker/presentation/widgets/app_skeleton.dart';
|
||||||
import 'package:game_tracker/presentation/widgets/tiles/statistics_tile.dart';
|
import 'package:game_tracker/presentation/widgets/tiles/statistics_tile.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:skeletonizer/skeletonizer.dart';
|
|
||||||
|
|
||||||
class StatisticsView extends StatefulWidget {
|
class StatisticsView extends StatefulWidget {
|
||||||
const StatisticsView({super.key});
|
const StatisticsView({super.key});
|
||||||
@@ -48,30 +48,9 @@ class _StatisticsViewState extends State<StatisticsView> {
|
|||||||
return LayoutBuilder(
|
return LayoutBuilder(
|
||||||
builder: (BuildContext context, BoxConstraints constraints) {
|
builder: (BuildContext context, BoxConstraints constraints) {
|
||||||
return SingleChildScrollView(
|
return SingleChildScrollView(
|
||||||
child: Skeletonizer(
|
child: AppSkeleton(
|
||||||
effect: PulseEffect(
|
|
||||||
from: Colors.grey[800]!,
|
|
||||||
to: Colors.grey[600]!,
|
|
||||||
duration: const Duration(milliseconds: 800),
|
|
||||||
),
|
|
||||||
enabled: isLoading,
|
enabled: isLoading,
|
||||||
enableSwitchAnimation: true,
|
fixLayoutBuilder: true,
|
||||||
switchAnimationConfig: SwitchAnimationConfig(
|
|
||||||
duration: const Duration(milliseconds: 200),
|
|
||||||
switchInCurve: Curves.linear,
|
|
||||||
switchOutCurve: Curves.linear,
|
|
||||||
transitionBuilder: AnimatedSwitcher.defaultTransitionBuilder,
|
|
||||||
layoutBuilder:
|
|
||||||
(Widget? currentChild, List<Widget> previousChildren) {
|
|
||||||
return Stack(
|
|
||||||
alignment: Alignment.topCenter,
|
|
||||||
children: [
|
|
||||||
...previousChildren,
|
|
||||||
if (currentChild != null) currentChild,
|
|
||||||
],
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
child: ConstrainedBox(
|
child: ConstrainedBox(
|
||||||
constraints: BoxConstraints(minWidth: constraints.maxWidth),
|
constraints: BoxConstraints(minWidth: constraints.maxWidth),
|
||||||
child: Column(
|
child: Column(
|
||||||
|
|||||||
Reference in New Issue
Block a user