Está en la página 1de 12

import 'package:flutter/material.

dart';

void main() {
runApp(FrequencyApp());
}

class Turma {
final String disciplina;
final String professor;
final String diasHorarios;

Turma({required this.disciplina, required this.professor, required


this.diasHorarios});
}

class FrequencyApp extends StatelessWidget {


@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'FREQUENCY',
theme: ThemeData(
primarySwatch: Colors.blue,
),
initialRoute: '/',
routes: {
'/': (context) => PaginaInicial(),
'/cadastro': (context) => PaginaCadastro(),
'/aluno': (context) => PaginaLogin(tipoUsuario: 'ALUNO'),
'/professor': (context) => PaginaLogin(tipoUsuario: 'PROFESSOR'),
'/home-aluno': (context) => PaginaAluno(),
'/adicionar-turma': (context) => PaginaAdicionarTurma(),
'/acessar-turmas': (context) => PaginaAcessarTurmas(),
'/home-professor': (context) => PaginaProfessor(),
},
);
}
}

class PaginaInicial extends StatelessWidget {


@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('FREQUENCY'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Bem-vindo ao FREQUENCY!',
style: TextStyle(fontSize: 24),
),
SizedBox(height: 100),
ElevatedButton(
onPressed: () {
Navigator.pushNamed(context, '/aluno');
},
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(Icons.person),
SizedBox(width: 8),
Text(
'ALUNO',
style: TextStyle(fontSize: 18),
),
],
),
style: ElevatedButton.styleFrom(
primary: Colors.blue,
padding: EdgeInsets.symmetric(horizontal: 60, vertical: 24),

shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(160),
),
),
),
SizedBox(height: 16),
ElevatedButton(
onPressed: () {
Navigator.pushNamed(context, '/professor');
},
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(Icons.school),
SizedBox(width: 8),
Text(
'PROFESSOR',
style: TextStyle(fontSize: 18),
),
],
),
style: ElevatedButton.styleFrom(
primary: Colors.blue,
padding: EdgeInsets.symmetric(horizontal: 40, vertical: 24),

shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(160),
),
),
),
],
),
),
);
}
}

class PaginaLogin extends StatelessWidget {


final TextEditingController nomeUsuarioController = TextEditingController();
final TextEditingController senhaController = TextEditingController();
final String tipoUsuario;

PaginaLogin({required this.tipoUsuario});

void _realizarLogin(BuildContext context) {


final nomeUsuario = nomeUsuarioController.text;
final senha = senhaController.text;

if (nomeUsuario.isNotEmpty && senha.isNotEmpty) {


if (tipoUsuario == 'ALUNO') {
Navigator.pushNamed(context, '/home-aluno');
} else if (tipoUsuario == 'PROFESSOR') {
Navigator.pushNamed(context, '/home-professor');
}
}
}

void _realizarCadastro(BuildContext context) {


Navigator.pushNamed(context, '/cadastro');
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('FREQUENCY - LOGIN'),
),
body: Padding(
padding: EdgeInsets.all(60),
child: Column(
children: <Widget>[
TextField(
controller: nomeUsuarioController,
decoration: InputDecoration(
labelText: 'Nome de usuário',
),
),
SizedBox(height: 16),
TextField(
controller: senhaController,
decoration: InputDecoration(
labelText: 'Senha',
),
obscureText: true,
),
SizedBox(height: 16),
ElevatedButton(
onPressed: () {
_realizarLogin(context);
},
child: Text(
'ENTRAR',
style: TextStyle(fontSize: 18),
),
style: ElevatedButton.styleFrom(
primary: Colors.blue,
padding: EdgeInsets.symmetric(horizontal: 40, vertical: 16),

shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
),
),
),
SizedBox(height: 8),
TextButton(
onPressed: () {
_realizarCadastro(context);
},
child: Text(
'CADASTRAR',
style: TextStyle(fontSize: 18),
),
),
],
),
),
);
}
}

class PaginaCadastro extends StatelessWidget {


final TextEditingController nomeController = TextEditingController();
final TextEditingController emailController = TextEditingController();
final TextEditingController senhaController = TextEditingController();

void _realizarCadastro(BuildContext context) {

final nome = nomeController.text;


final email = emailController.text;
final senha = senhaController.text;

if (nome.isNotEmpty && email.isNotEmpty && senha.isNotEmpty) {


Navigator.pop(context);
}
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('FREQUENCY - CADASTRO'),
),
body: Padding(
padding: EdgeInsets.all(60),
child: Column(
children: <Widget>[
TextField(
controller: nomeController,
decoration: InputDecoration(
labelText: 'Nome',
),
),
SizedBox(height: 16),
TextField(
controller: emailController,
decoration: InputDecoration(
labelText: 'Email',
),
),
SizedBox(height: 16),
TextField(
controller: senhaController,
decoration: InputDecoration(
labelText: 'Senha',
),
obscureText: true,
),
SizedBox(height: 16),
ElevatedButton(
onPressed: () {
_realizarCadastro(context);
},
child: Text(
'CADASTRAR',
style: TextStyle(fontSize: 18),
),
style: ElevatedButton.styleFrom(
primary: Colors.blue,
padding: EdgeInsets.symmetric(horizontal: 40, vertical: 16),

shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
),
),
),
],
),
),
);
}
}

class PaginaAluno extends StatelessWidget {


@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('FREQUENCY - ALUNO'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'Bem-vindo Aluno!',
style: TextStyle(fontSize: 24),
),
SizedBox(height: 16),
ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => PaginaAdicionarTurma()),
);
},
child: Text('Adicionar nova turma'),
style: ButtonStyle(
minimumSize: MaterialStateProperty.all(Size(210, 50)),
),
),
SizedBox(height: 16),
ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => PaginaAcessarTurmas()),
);
},
child: Text('Acessar minhas turmas'),
style: ButtonStyle(
minimumSize: MaterialStateProperty.all(Size(210, 50)),
),
),
],
),
),
);
}
}

class PaginaAdicionarTurma extends StatelessWidget {


final TextEditingController disciplinaController = TextEditingController();
final TextEditingController professorController = TextEditingController();
final TextEditingController horariosController = TextEditingController();

void _adicionarTurma(BuildContext context) {


final disciplina = disciplinaController.text;
final professor = professorController.text;
final horarios = horariosController.text;

if (disciplina.isNotEmpty && professor.isNotEmpty && horarios.isNotEmpty) {

Turma novaTurma = Turma(disciplina: disciplina, professor: professor,


diasHorarios: horarios);
Navigator.pushNamed(context, '/home-aluno');
}
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('FREQUENCY - ADICIONAR TURMA'),
),
body: Padding(
padding: EdgeInsets.all(16),
child: Column(
children: <Widget>[
TextField(
controller: disciplinaController,
decoration: InputDecoration(
labelText: 'Código de acesso',
),
),
SizedBox(height: 16),
ElevatedButton(
onPressed: () {
_adicionarTurma(context);
},
child: Text(
'Adicionar Turma',
style: TextStyle(fontSize: 18),
),
style: ElevatedButton.styleFrom(
primary: Colors.blue,
padding: EdgeInsets.symmetric(horizontal: 40, vertical: 16),

shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
),
),
),
],
),
),
);
}
}

class PaginaAcessarTurmas extends StatelessWidget {


final List<Turma> turmas = [
Turma(
disciplina: 'Linguagens de Programação 33.1',
professor: 'Leandro Lesqueves C.',
diasHorarios: 'Segunda e quarta, das 14h às 16h',
),
Turma(
disciplina: 'Programação III 37.1',
professor: 'Leandro Lesqueves C.',
diasHorarios: 'Terça e quinta, das 10h às 12h',
),
Turma(
disciplina: 'Arq. de Computadores 33.1',
professor: 'Leandro Lesqueves C.',
diasHorarios: 'Segunda e quarta, das 8h às 10h',
),
];

void _verificarPresenca(BuildContext context, String disciplina) {


print('Verificando presença na disciplina: $disciplina');
Navigator.push(
context,
MaterialPageRoute(builder: (context) => VerificarPresencaPage(disciplina)),
);
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('FREQUENCY - Acessar Turmas'),
),
body: ListView.builder(
itemCount: turmas.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(turmas[index].disciplina),
subtitle: Text('Professor: ${turmas[index].professor}\n$
{turmas[index].diasHorarios}'),
trailing: ElevatedButton(
onPressed: () {
_verificarPresenca(context, turmas[index].disciplina);
},
child: Text('Verificar Presença'),
),
);
},
),
);
}
}

class VerificarPresencaPage extends StatelessWidget {


final String disciplina;

VerificarPresencaPage(this.disciplina);

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Verificar Presença'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
' ',
style: TextStyle(fontSize: 24),
),
Text(
disciplina,
style: TextStyle(fontSize: 18),
),
],
),
),
);
}
}

class PaginaProfessor extends StatelessWidget {


@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('FREQUENCY - PROFESSOR'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'Bem-vindo Professor!',
style: TextStyle(fontSize: 24),
),
SizedBox(height: 16),
ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) =>
AdicionarDisciplinaPage()),
);
},
child: Text('Criar nova disciplina'),
style: ButtonStyle(
minimumSize: MaterialStateProperty.all(Size(210, 50)),
),
),
SizedBox(height: 16),
ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => MinhasDisciplinasPage()),
);
},
child: Text('Acessar minhas disciplinas'),
style: ButtonStyle(
minimumSize: MaterialStateProperty.all(Size(200, 50)),
),
),
],
),
),
);
}
}

class AdicionarDisciplinaPage extends StatelessWidget {


TextEditingController disciplinaController = TextEditingController();
TextEditingController horarioController = TextEditingController();
TextEditingController chaveAcessoController = TextEditingController();
TextEditingController turmaDisciplinaController = TextEditingController();

void _salvarDisciplina(BuildContext context) {


String disciplina = disciplinaController.text;
String horario = horarioController.text;
String chaveAcesso = chaveAcessoController.text;
String turmaDisciplina = turmaDisciplinaController.text;

disciplinaController.clear();
horarioController.clear();
chaveAcessoController.clear();
turmaDisciplinaController.clear();

Navigator.pop(context);
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Adicionar Disciplina'),
),
body: Padding(
padding: EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Digite os detalhes da disciplina:',
style: TextStyle(fontSize: 18),
),
SizedBox(height: 16),
TextField(
controller: disciplinaController,
decoration: InputDecoration(
labelText: 'Disciplina',
),
),
SizedBox(height: 8),
TextField(
controller: horarioController,
decoration: InputDecoration(
labelText: 'Horário das aulas',
),
),

SizedBox(height: 8),
TextField(
controller: chaveAcessoController,
decoration: InputDecoration(
labelText: 'Chave de Acesso',
),
),
SizedBox(height: 8),
TextField(
controller: turmaDisciplinaController,
decoration: InputDecoration(
labelText: 'Turma',
),
),
SizedBox(height: 16),
ElevatedButton(
onPressed: () => _salvarDisciplina(context),
child: Text('Salvar disciplina'),
),
],
),
),
);
}
}

class MinhasDisciplinasPage extends StatelessWidget {


void _acompanharAlunos(BuildContext context, String disciplina) {
print('Acompanhando alunos da disciplina: $disciplina');
Navigator.push(
context,
MaterialPageRoute(builder: (context) => AcompanharAlunosPage(disciplina)),
);
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Minhas Disciplinas'),
),
body: Column(
children: [
ListTile(
title: Text('Linguagens de Programação 33.1'),
subtitle: Text('Horário: 8:00 - 10:00'),
trailing: ElevatedButton(
onPressed: () => _acompanharAlunos(context, 'Linguagens de
Programação 33.1'),
child: Text('Acompanhar alunos'),
),
),
ListTile(
title: Text('Programação III 37.1'),
subtitle: Text('Horário: 14:00 - 16:00'),
trailing: ElevatedButton(
onPressed: () => _acompanharAlunos(context, 'Programação III 37.1'),
child: Text('Acompanhar alunos'),
),
),
ListTile(
title: Text('Programação III 37.2'),
subtitle: Text('Horário: 14:00 - 16:00'),
trailing: ElevatedButton(
onPressed: () => _acompanharAlunos(context, 'Programação III 37.2'),
child: Text('Acompanhar alunos'),
),
),
ListTile(
title: Text('Arq. de Computadores 33.1'),
subtitle: Text('Horário: 18:00 - 20:00'),
trailing: ElevatedButton(
onPressed: () => _acompanharAlunos(context, 'Arq. de Computadores
33.1'),
child: Text('Acompanhar alunos'),
),
),
],
),
);
}
}

class AcompanharAlunosPage extends StatelessWidget {


final String disciplina;

AcompanharAlunosPage(this.disciplina);

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Acompanhar Alunos'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
' ',
style: TextStyle(fontSize: 24),
),
Text(
disciplina,
style: TextStyle(fontSize: 18),
),
],
),
),
);
}
}

También podría gustarte