Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
appFluetter
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nayeli Monserrat Velasco Lopez
appFluetter
Commits
e3c6cab1
Commit
e3c6cab1
authored
8 months ago
by
nayeli92433
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Descripción de los cambios realizados
parent
762ca69b
master
…
nayeli.velasco
1 merge request
!1
Nayeli.velasco
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
78 additions
and
93 deletions
+78
-93
login.dart
lib/login.dart
+64
-0
main.dart
lib/main.dart
+14
-93
No files found.
lib/login.dart
0 → 100644
View file @
e3c6cab1
import
'package:flutter/material.dart'
;
class
PantallaInicioSesion
extends
StatefulWidget
{
@override
_PantallaInicioSesionState
createState
()
=>
_PantallaInicioSesionState
();
}
class
_PantallaInicioSesionState
extends
State
<
PantallaInicioSesion
>
{
final
_formKey
=
GlobalKey
<
FormState
>();
final
TextEditingController
_usuarioController
=
TextEditingController
();
final
TextEditingController
_contrasenaController
=
TextEditingController
();
void
_iniciarSesion
()
{
if
(
_formKey
.
currentState
!.
validate
())
{
Navigator
.
pushReplacementNamed
(
context
,
'/categorias'
);
}
}
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
title:
Text
(
'Inicio de Sesión'
),
),
body:
Padding
(
padding:
EdgeInsets
.
all
(
16.0
),
child:
Form
(
key:
_formKey
,
child:
Column
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
[
TextFormField
(
controller:
_usuarioController
,
decoration:
InputDecoration
(
labelText:
'Usuario'
),
validator:
(
value
)
{
if
(
value
!.
isEmpty
)
{
return
'Por favor ingrese su usuario'
;
}
return
null
;
},
),
TextFormField
(
controller:
_contrasenaController
,
decoration:
InputDecoration
(
labelText:
'Contraseña'
),
obscureText:
true
,
validator:
(
value
)
{
if
(
value
!.
isEmpty
)
{
return
'Por favor ingrese su contraseña'
;
}
return
null
;
},
),
SizedBox
(
height:
20
),
ElevatedButton
(
onPressed:
_iniciarSesion
,
child:
Text
(
'Iniciar Sesión'
),
),
],
),
),
),
);
}
}
This diff is collapsed.
Click to expand it.
lib/main.dart
View file @
e3c6cab1
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'login.dart'
;
void
main
(
)
{
void
main
(
)
{
runApp
(
const
MyApp
());
runApp
(
const
MyApp
());
}
}
...
@@ -7,119 +10,37 @@ void main() {
...
@@ -7,119 +10,37 @@ void main() {
class
MyApp
extends
StatelessWidget
{
class
MyApp
extends
StatelessWidget
{
const
MyApp
({
super
.
key
});
const
MyApp
({
super
.
key
});
// This widget is the root of your application.
@override
@override
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
return
MaterialApp
(
return
MaterialApp
(
title:
'Flutter Demo'
,
title:
'Flutter Demo'
,
theme:
ThemeData
(
theme:
ThemeData
(
// This is the theme of your application.
//
// TRY THIS: Try running your application with "flutter run". You'll see
// the application has a purple toolbar. Then, without quitting the app,
// try changing the seedColor in the colorScheme below to Colors.green
// and then invoke "hot reload" (save your changes or press the "hot
// reload" button in a Flutter-supported IDE, or press "r" if you used
// the command line to start the app).
//
// Notice that the counter didn't reset back to zero; the application
// state is not lost during the reload. To reset the state, use hot
// restart instead.
//
// This works for code too, not just values: Most code changes can be
// tested with just a hot reload.
colorScheme:
ColorScheme
.
fromSeed
(
seedColor:
Colors
.
deepPurple
),
colorScheme:
ColorScheme
.
fromSeed
(
seedColor:
Colors
.
deepPurple
),
useMaterial3:
true
,
useMaterial3:
true
,
),
),
home:
const
MyHomePage
(
title:
'Flutter Demo Home Page'
),
initialRoute:
'/'
,
routes:
{
'/'
:
(
context
)
=>
PantallaInicioSesion
(),
'/categorias'
:
(
context
)
=>
CategoriasListScreen
(),
},
);
);
}
}
}
}
class
MyHomePage
extends
StatefulWidget
{
// Aquí va tu CategoriasListScreen para la pantalla de categorías.
const
MyHomePage
({
super
.
key
,
required
this
.
title
});
// Crea un archivo llamado categorias_list_screen.dart en la carpeta lib/screens
// y define la pantalla de categorías. Aquí tienes un ejemplo básico:
// This widget is the home page of your application. It is stateful, meaning
// that it has a State object (defined below) that contains fields that affect
// how it looks.
// This class is the configuration for the state. It holds the values (in this
// case the title) provided by the parent (in this case the App widget) and
// used by the build method of the State. Fields in a Widget subclass are
// always marked "final".
final
String
title
;
@override
State
<
MyHomePage
>
createState
()
=>
_MyHomePageState
();
}
class
_MyHomePageState
extends
State
<
MyHomePage
>
{
int
_counter
=
0
;
void
_incrementCounter
()
{
setState
(()
{
// This call to setState tells the Flutter framework that something has
// changed in this State, which causes it to rerun the build method below
// so that the display can reflect the updated values. If we changed
// _counter without calling setState(), then the build method would not be
// called again, and so nothing would appear to happen.
_counter
++;
});
}
class
CategoriasListScreen
extends
StatelessWidget
{
@override
@override
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
// This method is rerun every time setState is called, for instance as done
// by the _incrementCounter method above.
//
// The Flutter framework has been optimized to make rerunning build methods
// fast, so that you can just rebuild anything that needs updating rather
// than having to individually change instances of widgets.
return
Scaffold
(
return
Scaffold
(
appBar:
AppBar
(
appBar:
AppBar
(
// TRY THIS: Try changing the color here to a specific color (to
title:
Text
(
'Categorias'
),
// Colors.amber, perhaps?) and trigger a hot reload to see the AppBar
// change color while the other colors stay the same.
backgroundColor:
Theme
.
of
(
context
).
colorScheme
.
inversePrimary
,
// Here we take the value from the MyHomePage object that was created by
// the App.build method, and use it to set our appbar title.
title:
Text
(
widget
.
title
),
),
),
body:
Center
(
body:
Center
(
// Center is a layout widget. It takes a single child and positions it
child:
Text
(
'Lista de Categorías'
),
// in the middle of the parent.
child:
Column
(
// Column is also a layout widget. It takes a list of children and
// arranges them vertically. By default, it sizes itself to fit its
// children horizontally, and tries to be as tall as its parent.
//
// Column has various properties to control how it sizes itself and
// how it positions its children. Here we use mainAxisAlignment to
// center the children vertically; the main axis here is the vertical
// axis because Columns are vertical (the cross axis would be
// horizontal).
//
// TRY THIS: Invoke "debug painting" (choose the "Toggle Debug Paint"
// action in the IDE, or press "p" in the console), to see the
// wireframe for each widget.
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
<
Widget
>[
const
Text
(
'You have pushed the button this many times:'
,
),
Text
(
'
$_counter
'
,
style:
Theme
.
of
(
context
).
textTheme
.
headlineMedium
,
),
],
),
),
),
floatingActionButton:
FloatingActionButton
(
onPressed:
_incrementCounter
,
tooltip:
'Increment'
,
child:
const
Icon
(
Icons
.
add
),
),
// This trailing comma makes auto-formatting nicer for build methods.
);
);
}
}
}
}
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment