diff --git a/assets/img/logo_visorus.jpg b/assets/img/logo_visorus.jpg new file mode 100644 index 0000000..9318090 Binary files /dev/null and b/assets/img/logo_visorus.jpg differ diff --git a/lib/main.dart b/lib/main.dart index d8b4e30..7662203 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,23 +1,23 @@ import 'package:flutter/material.dart'; -import 'package:primer_practica/src/pages/login_page.dart'; -import 'package:primer_practica/src/pages/home_page.dart'; -import 'package:primer_practica/src/pages/articles_page.dart'; +import 'package:primer_practica/src/config/routes.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { - const MyApp({super.key}); + const MyApp({Key? key}) : super(key: key); + @override Widget build(BuildContext context) { return MaterialApp( + title: 'Primer practica', + theme: ThemeData( + primarySwatch: Colors.blue, + ), + initialRoute: 'login', // Establece la ruta inicial debugShowCheckedModeBanner: false, - title: 'Primera practica', - routes: { - 'login' : (_) => ArticlesPage(), - }, - initialRoute: 'login', + routes: getApplicationRoutes(), // Usa las rutas definidas ); } -} \ No newline at end of file +} diff --git a/lib/src/config/routes.dart b/lib/src/config/routes.dart new file mode 100644 index 0000000..200bdf5 --- /dev/null +++ b/lib/src/config/routes.dart @@ -0,0 +1,12 @@ +import 'package:flutter/material.dart'; +import 'package:primer_practica/src/pages/login_page.dart'; +import 'package:primer_practica/src/pages/home_page.dart'; +import 'package:primer_practica/src/pages/articles_page.dart'; + +Map getApplicationRoutes() { + return { + 'login': (BuildContext context) => const LoginPage(), + 'home': (BuildContext context) => const HomePage(), + 'articles': (BuildContext context) => const ArticlesPage(), + }; +} diff --git a/lib/src/pages/articles_page.dart b/lib/src/pages/articles_page.dart index 997f762..5fafccf 100644 --- a/lib/src/pages/articles_page.dart +++ b/lib/src/pages/articles_page.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; class ArticlesPage extends StatelessWidget { - const ArticlesPage ({Key? key}) : super(key: key); + const ArticlesPage({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -10,7 +10,7 @@ class ArticlesPage extends StatelessWidget { title: const Text('Articles Page'), ), body: const Center( - child: Text('Hola articles_page'), + child: Text('Hola articles page'), ), ); } diff --git a/lib/src/pages/home_page.dart b/lib/src/pages/home_page.dart index 6b30b5c..989f30b 100644 --- a/lib/src/pages/home_page.dart +++ b/lib/src/pages/home_page.dart @@ -1,16 +1,28 @@ import 'package:flutter/material.dart'; class HomePage extends StatelessWidget { - const HomePage({Key? key}) : super(key: key); + const HomePage({Key? key}) : super(key: key); // Constructor @override Widget build(BuildContext context) { return Scaffold( - appBar: AppBar( - title: const Text('Home Page'), + appBar: AppBar( // Barra de aplicaciones + title: const Text('Home Page'), // Título de la barra ), - body: const Center( - child: Text('Hola home_page'), + body: Center( // Centra el contenido + child: Column( // Dispone los hijos en una columna + mainAxisAlignment: MainAxisAlignment.center, // Centra verticalmente + children: [ // Lista de hijos + const Text('Hola home page'), // Texto + const SizedBox(height: 20), // Tamaño del texto + ElevatedButton( // Botón + onPressed: () { // Acción al presionar + Navigator.pushNamed(context, 'articles'); // Navega a 'articles' + }, + child: const Text('Ir a Articles Page'), // Texto del botón + ), + ], + ), ), ); } diff --git a/lib/src/pages/login_page.dart b/lib/src/pages/login_page.dart index 71f7226..dc5282b 100644 --- a/lib/src/pages/login_page.dart +++ b/lib/src/pages/login_page.dart @@ -1,16 +1,46 @@ import 'package:flutter/material.dart'; class LoginPage extends StatelessWidget { - const LoginPage({Key? key}) : super(key: key); + const LoginPage({Key? key}) : super(key: key); // Constructor @override Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: const Text('Login Page'), + return Scaffold( + appBar: AppBar( // Barra de aplicaciones en la parte superior + title: const Text('Login Page'), // Título de la barra ), - body: const Center( - child: Text('Hola login_page'), + body: Padding( // Espacia el contenido del cuerpo + padding: const EdgeInsets.all(180.0), // Padding alrededor del contenido + child: Center( // Centra el contenido en la pantalla + child: Column( // Organiza los widgets en una columna vertical + mainAxisAlignment: MainAxisAlignment.center, // Centra verticalmente + children: [ // Lista de widgets en la columna + Image.asset('assets/img/logo_visorus.jpg', height: 100), // Muestra el logo con altura de 100 + const SizedBox(height: 80), // Espacio de 80 píxeles entre el logo y el primer campo de texto + TextField( // Campo de texto para el usuario + decoration: const InputDecoration( + labelText: 'Usuario', // Etiqueta del campo de texto + border: OutlineInputBorder(), // Borde del campo de texto + ), + ), + const SizedBox(height: 20), // Espacio de 20 píxeles entre los campos de texto + TextField( // Campo de texto para la contraseña + obscureText: true, // Oculta el texto introducido + decoration: const InputDecoration( + labelText: 'Contraseña', // Etiqueta del campo de texto + border: OutlineInputBorder(), // Borde del campo de texto + ), + ), + const SizedBox(height: 20), // Espacio de 20 píxeles antes del botón + ElevatedButton( + onPressed: () { // Acción al presionar el botón + Navigator.pushNamed(context, 'home'); // Navega a la página 'home' + }, + child: const Text('Acceder'), // Texto del botón + ), + ], + ), + ), ), ); } diff --git a/pubspec.yaml b/pubspec.yaml index e84c59b..9e1616e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -57,7 +57,8 @@ flutter: # included with your application, so that you can use the icons in # the material Icons class. uses-material-design: true - + assets: + - assets/img/ # To add assets to your application, add an assets section, like this: # assets: # - images/a_dot_burr.jpeg