add classes update event by image wip
This commit is contained in:
parent
0ae1311b53
commit
ceacbc72ee
@ -1,67 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'events.dart';
|
|
||||||
import '../variable/globals.dart' as globals;
|
|
||||||
import 'package:http/http.dart' as http;
|
|
||||||
import 'dart:io';
|
|
||||||
import 'dart:convert';
|
|
||||||
|
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
|
||||||
|
|
||||||
mixin ShowDescImageUpdate<T extends StatefulWidget> on State<T> {
|
|
||||||
Future<void> updateEvents(var events) async {
|
|
||||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
|
||||||
var accessToken = prefs.getString("access_token") ?? "";
|
|
||||||
List<String> send = ["toto"];
|
|
||||||
|
|
||||||
if (accessToken.isNotEmpty) {
|
|
||||||
var urlPut = Uri.parse("${globals.api}/events");
|
|
||||||
print("start date : ${events["start_date"]}");
|
|
||||||
var responsePut = await http.put(urlPut,
|
|
||||||
headers: {
|
|
||||||
HttpHeaders.cookieHeader: 'access_token=${accessToken}',
|
|
||||||
HttpHeaders.acceptHeader: 'application/json, text/plain, */*',
|
|
||||||
HttpHeaders.contentTypeHeader: 'application/json'
|
|
||||||
},
|
|
||||||
body: jsonEncode({
|
|
||||||
'name': events["name"],
|
|
||||||
'place': events["place"],
|
|
||||||
'start_date': events['date'],
|
|
||||||
'end_date': events['date'],
|
|
||||||
'organizers': send,
|
|
||||||
'latitude': '0.0',
|
|
||||||
'longitude': '0.0',
|
|
||||||
}));
|
|
||||||
|
|
||||||
print("http put code status : ${responsePut.statusCode}");
|
|
||||||
print("http put body : ${responsePut.body}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void showDescImageUpdateDialog(BuildContext context, var events) {
|
|
||||||
// Create AlertDialog
|
|
||||||
String name = events['name'];
|
|
||||||
AlertDialog dialog = AlertDialog(
|
|
||||||
title: Text("Modifier un evenement"),
|
|
||||||
content: Text("${name} a été trouvé. Voulez-vous le modifier ou voir ? "),
|
|
||||||
actions: [
|
|
||||||
TextButton(
|
|
||||||
child: Text("Annuler"),
|
|
||||||
onPressed: () {
|
|
||||||
Navigator.of(context).pop("Yes, Of course!"); // Return value
|
|
||||||
}),
|
|
||||||
TextButton(
|
|
||||||
child: Text("Oui"),
|
|
||||||
onPressed: () {
|
|
||||||
updateEvents(events); // Return value
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
|
|
||||||
// Call showDialog function to show dialog.
|
|
||||||
Future futureValue = showDialog(
|
|
||||||
context: context,
|
|
||||||
builder: (BuildContext context) {
|
|
||||||
return dialog;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
242
covas_mobile/lib/pages/UpdateEventImage.dart
Normal file
242
covas_mobile/lib/pages/UpdateEventImage.dart
Normal file
@ -0,0 +1,242 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
|
import 'package:http/http.dart' as http;
|
||||||
|
|
||||||
|
import 'dart:convert';
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
//import 'MyHomePage.dart';
|
||||||
|
import 'ListItemMenu.dart';
|
||||||
|
|
||||||
|
import '../classes/alert.dart';
|
||||||
|
|
||||||
|
import '../variable/globals.dart' as globals;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
runApp(MyApp());
|
||||||
|
}
|
||||||
|
|
||||||
|
class MyApp extends StatelessWidget {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return MaterialApp(
|
||||||
|
debugShowCheckedModeBanner: false,
|
||||||
|
home: UpdateeventImage(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class UpdateeventImage extends StatefulWidget {
|
||||||
|
@override
|
||||||
|
_UpdateeventImageState createState() => _UpdateeventImageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _UpdateeventImageState extends State<UpdateeventImage>
|
||||||
|
with ShowErrorDialog {
|
||||||
|
TextEditingController inputPseudo = TextEditingController();
|
||||||
|
TextEditingController inputPassword = TextEditingController();
|
||||||
|
Future<void> _login(BuildContext context) async {
|
||||||
|
var url = Uri.parse("${globals.api}/token");
|
||||||
|
var pseudo = inputPseudo.text;
|
||||||
|
var password = inputPassword.text;
|
||||||
|
print("get login");
|
||||||
|
print(pseudo.isNotEmpty);
|
||||||
|
print(password.isNotEmpty);
|
||||||
|
if ((pseudo.isNotEmpty) && (password.isNotEmpty)) {
|
||||||
|
print(url);
|
||||||
|
try {
|
||||||
|
//String credentials = "${pseudo}:${password}";
|
||||||
|
//Codec<String, String> stringToBase64 = utf8.fuse(base64);
|
||||||
|
//String encoded = stringToBase64.encode(credentials);
|
||||||
|
var response = await http.post(url,
|
||||||
|
// headers: {
|
||||||
|
// HttpHeaders.authorizationHeader: 'Basic $encoded',
|
||||||
|
//}
|
||||||
|
headers: {
|
||||||
|
'accept': 'application/json',
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
"username": "${pseudo}",
|
||||||
|
"password": "${password}"
|
||||||
|
});
|
||||||
|
print(response.statusCode);
|
||||||
|
if ((response.statusCode == 200) || (response.statusCode == 201)) {
|
||||||
|
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||||
|
|
||||||
|
var cookies = response.headers["set-cookie"].toString().split(";");
|
||||||
|
for (var cookie in cookies) {
|
||||||
|
var cookiesMany = cookie.split(",");
|
||||||
|
for (var cookie2 in cookiesMany) {
|
||||||
|
switch (cookie2.split("=")[0]) {
|
||||||
|
case "access_token":
|
||||||
|
{
|
||||||
|
prefs.setString("access_token", cookie2.split("=")[1]);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Navigator.push(
|
||||||
|
context, MaterialPageRoute(builder: (_) => ListItemMenu()));
|
||||||
|
} else {
|
||||||
|
var text = "";
|
||||||
|
switch (response.statusCode) {
|
||||||
|
case 400:
|
||||||
|
{
|
||||||
|
text = "Requête mal construite";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 406:
|
||||||
|
{
|
||||||
|
text = "Mot de passe incorrect";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 404:
|
||||||
|
{
|
||||||
|
text = "Utilisateur inconnu";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 403:
|
||||||
|
{
|
||||||
|
text = "Utilisateur desactive";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 410:
|
||||||
|
{
|
||||||
|
text = "Token invalide";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 500:
|
||||||
|
{
|
||||||
|
text = "Probleme interne du serveur";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
text = "Probleme d'authentification inconnu";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
showErrorDialog(context, text);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
showErrorDialog(context, "${e}");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
showErrorDialog(context, "Champ vide");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void start() async {
|
||||||
|
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||||
|
var access_token = prefs.getString("access_token") ?? "";
|
||||||
|
print("Get access token");
|
||||||
|
|
||||||
|
if (access_token.isNotEmpty) {
|
||||||
|
print("Appel HTTP");
|
||||||
|
var urlToken = Uri.parse("${globals.api}/token");
|
||||||
|
|
||||||
|
var responseToken = await http.get(urlToken,
|
||||||
|
headers: {HttpHeaders.cookieHeader: 'access_token: ${access_token}'});
|
||||||
|
print(responseToken.statusCode);
|
||||||
|
if (responseToken.statusCode == 200) {
|
||||||
|
print("route to item list");
|
||||||
|
Navigator.push(
|
||||||
|
context, MaterialPageRoute(builder: (_) => ListItemMenu()));
|
||||||
|
} else {
|
||||||
|
prefs.remove("access_token");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
start();
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Scaffold(
|
||||||
|
backgroundColor: Colors.white,
|
||||||
|
appBar: AppBar(
|
||||||
|
title: Text("Login Page"),
|
||||||
|
backgroundColor: Colors.blue,
|
||||||
|
foregroundColor: Colors.white,
|
||||||
|
),
|
||||||
|
body: SingleChildScrollView(
|
||||||
|
child: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(top: 60.0),
|
||||||
|
child: Center(
|
||||||
|
child: Container(
|
||||||
|
width: 200,
|
||||||
|
height: 150,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.red,
|
||||||
|
borderRadius: BorderRadius.circular(50.0)),
|
||||||
|
child: Image.asset('./images/flutter.png')),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
//padding: const EdgeInsets.only(left:15.0,right: 15.0,top:0,bottom: 0),
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 15),
|
||||||
|
child: TextField(
|
||||||
|
controller: inputPseudo,
|
||||||
|
decoration: InputDecoration(
|
||||||
|
border: OutlineInputBorder(),
|
||||||
|
labelText: 'Pseudo',
|
||||||
|
hintText: 'Enter pseudo existent'),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(
|
||||||
|
left: 15.0, right: 15.0, top: 15, bottom: 0),
|
||||||
|
//padding: EdgeInsets.symmetric(horizontal: 15),
|
||||||
|
child: TextField(
|
||||||
|
controller: inputPassword,
|
||||||
|
obscureText: true,
|
||||||
|
decoration: InputDecoration(
|
||||||
|
border: OutlineInputBorder(),
|
||||||
|
labelText: 'Password',
|
||||||
|
hintText: 'Enter secure password'),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
TextButton(
|
||||||
|
onPressed: () {
|
||||||
|
//TODO FORGOT PASSWORD SCREEN GOES HERE
|
||||||
|
},
|
||||||
|
child: Text(
|
||||||
|
'Forgot Password',
|
||||||
|
style: TextStyle(color: Colors.blue, fontSize: 15),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
height: 50,
|
||||||
|
width: 250,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.blue, borderRadius: BorderRadius.circular(20)),
|
||||||
|
child: TextButton(
|
||||||
|
onPressed: () {
|
||||||
|
_login(context);
|
||||||
|
},
|
||||||
|
child: Text(
|
||||||
|
'Login',
|
||||||
|
style: TextStyle(color: Colors.white, fontSize: 25),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 130,
|
||||||
|
),
|
||||||
|
Text('New User? Create Account')
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user