Im doing an app in flutter, but, suddenly, it shows some errors whenever I try to trigger some button. Here are my code:
import 'package:flutter/material.dart';
import 'package:projeto_quinto_semestre/api/api_service.dart';
import 'package:projeto_quinto_semestre/pages/login.dart'; // Importa a página de login
class CadastroPage extends StatefulWidget {
const CadastroPage({super.key});
@override
_CadastroPageState createState() => _CadastroPageState();
}
class _CadastroPageState extends State<CadastroPage> {
final _formKey = GlobalKey<FormState>();
final TextEditingController _nomeController = TextEditingController();
final TextEditingController _sobrenomeController = TextEditingController();
final TextEditingController _emailController = TextEditingController();
final TextEditingController _senhaController = TextEditingController();
String _genero = 'Masculino';
final ApiService _apiService = ApiService();
void _submitForm() {
if (_formKey.currentState!.validate()) {
// Lógica de cadastro
Map<String, dynamic> usuario = {
'nome': _nomeController.text,
'sobrenome': _sobrenomeController.text,
'email': _emailController.text,
'genero': _genero,
'senha': _senhaController.text,
};
_apiService.addUsuario(usuario).then((response) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('Usuário cadastrado com sucesso!')),
);
// Redirecionar para a página de login após cadastro
Navigator.pushReplacement(
context,
MaterialPageRoute(builder: (context) => const LoginPage()),
);
}).catchError((error) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Erro ao cadastrar usuário: $error')),
);
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text(
'Cadastro',
style: TextStyle(color: Colors.white),
),
backgroundColor: const Color.fromARGB(255, 102, 0, 0),
),
body: SingleChildScrollView(
padding: const EdgeInsets.all(20.0),
child: Form(
key: _formKey,
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Center(
child: Image.network(
'https://i.imgur.com/gBQhCJ6.png',
height: 100,
),
),
const SizedBox(height: 20.0),
TextFormField(
controller: _nomeController,
decoration: const InputDecoration(labelText: 'Nome'),
validator: (value) {
if (value == null || value.isEmpty) {
return 'Por favor, insira seu nome';
}
return null;
},
),
const SizedBox(height: 20.0),
TextFormField(
controller: _sobrenomeController,
decoration: const InputDecoration(labelText: 'Sobrenome'),
validator: (value) {
if (value == null || value.isEmpty) {
return 'Por favor, insira seu sobrenome';
}
return null;
},
),
const SizedBox(height: 20.0),
DropdownButtonFormField<String>(
value: _genero,
decoration: const InputDecoration(labelText: 'Gênero'),
items: ['Masculino', 'Feminino', 'Outro'].map((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
onChanged: (String? value) {
setState(() {
_genero = value!;
});
},
),
const SizedBox(height: 20.0),
TextFormField(
controller: _emailController,
decoration: const InputDecoration(labelText: 'Email'),
keyboardType: TextInputType.emailAddress,
validator: (value) {
if (value == null || value.isEmpty || !value.contains('@')) {
return 'Por favor, insira um email válido';
}
return null;
},
),
const SizedBox(height: 20.0),
TextFormField(
controller: _senhaController,
decoration: const InputDecoration(labelText: 'Senha'),
obscureText: true,
validator: (value) {
if (value == null || value.isEmpty) {
return 'Por favor, insira uma senha';
}
return null;
},
),
const SizedBox(height: 20.0),
SizedBox(
height: 40.0,
width: 150.0,
child: ElevatedButton(
onPressed: _submitForm,
style: ButtonStyle(
backgroundColor: MaterialStateProperty.all<Color>(
const Color.fromARGB(255, 102, 0, 0)),
padding: MaterialStateProperty.all<EdgeInsets>(
const EdgeInsets.symmetric(
vertical: 5.0, horizontal: 20.0)),
),
child: const Text(
'Cadastrar',
style: TextStyle(fontSize: 16, color: Colors.white),
),
),
),
const SizedBox(height: 20.0),
TextButton(
onPressed: () {
Navigator.pushReplacement(
context,
MaterialPageRoute(builder: (context) => const LoginPage()),
);
},
child: const Text(
'Já tem cadastro? Faça seu login!',
style: TextStyle(color: Color.fromARGB(255, 102, 0, 0)),
),
),
],
),
),
),
backgroundColor: Colors.white,
);
}
}
void main() {
runApp(MaterialApp(
title: 'Cadastro Page',
home: const CadastroPage(),
theme: ThemeData(
primarySwatch: Colors.red,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
));
}
Whenever I click the “Cadastrar” or “Já tem cadastro? Faça seu login!”, it shows this error. But, only yesterday everything was alright. I dont understand what is happening.
I tried to make an addition in to the database, using flutter as front, node.js as backend. I achieved this, but between today and yesterday, somehow, all of this dont work anymore.
Ana Paula Ribeiro is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.