Created project base structure, state management, router and login

This commit is contained in:
Juan Gilsanz Polo
2024-02-21 23:53:22 +01:00
commit 460e13b2e9
168 changed files with 6966 additions and 0 deletions

52
lib/widgets/layout.dart Normal file
View File

@@ -0,0 +1,52 @@
import 'package:animations/animations.dart';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
class Layout extends StatelessWidget {
final StatefulNavigationShell navigationShell;
const Layout({
Key? key,
required this.navigationShell,
}) : super(key: key);
@override
Widget build(BuildContext context) {
void goBranch(int index) {
navigationShell.goBranch(
index,
initialLocation: index == navigationShell.currentIndex,
);
}
return Scaffold(
body: PageTransitionSwitcher(
duration: const Duration(milliseconds: 200),
transitionBuilder: (child, primaryAnimation, secondaryAnimation) => FadeThroughTransition(
animation: primaryAnimation,
secondaryAnimation: secondaryAnimation,
child: child,
),
child: navigationShell,
),
bottomNavigationBar: NavigationBar(
onDestinationSelected: (s) => goBranch(s),
selectedIndex: navigationShell.currentIndex,
destinations: const [
NavigationDestination(
icon: Icon(Icons.link_rounded),
label: "Links",
),
NavigationDestination(
icon: Icon(Icons.search_rounded),
label: "Search",
),
NavigationDestination(
icon: Icon(Icons.settings_rounded),
label: "Settings",
),
],
),
);
}
}

View File

@@ -0,0 +1,39 @@
import 'package:flutter/material.dart';
class ProcessDialog extends StatelessWidget {
final String message;
const ProcessDialog({
Key? key,
required this.message,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async => false,
child: Dialog(
backgroundColor: Theme.of(context).dialogBackgroundColor,
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 30,
horizontal: 30,
),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
const CircularProgressIndicator(),
const SizedBox(width: 40),
Flexible(
child: Text(
message,
style: TextStyle(color: Theme.of(context).colorScheme.onSurface),
),
)
],
),
),
),
);
}
}