Merge pull request 'feature/search-by-image' (#6) from feature/search-by-image into main
Reviewed-on: #6
This commit is contained in:
commit
6f185d99ce
@ -1,21 +1,59 @@
|
||||
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 ShowDescImageAdd<T extends StatefulWidget> on State<T> {
|
||||
void showDescImageAddDialog(BuildContext context, String text) {
|
||||
Future<void> addEvents(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 showDescImageAddDialog(BuildContext context, var events) {
|
||||
// Create AlertDialog
|
||||
String name = events['name'];
|
||||
AlertDialog dialog = AlertDialog(
|
||||
title: Text("Description image"),
|
||||
content: Text(text),
|
||||
title: Text("Ajouter un evenement"),
|
||||
content: Text("${name} n'a pas été trouvé. Voulez-vous l'ajouter ? "),
|
||||
actions: [
|
||||
ElevatedButton(
|
||||
child: Text("OK"),
|
||||
style: ElevatedButton.styleFrom(
|
||||
padding: EdgeInsets.symmetric(horizontal: 50, vertical: 20),
|
||||
textStyle:
|
||||
TextStyle(fontSize: 15, fontWeight: FontWeight.normal)),
|
||||
TextButton(
|
||||
child: Text("Annuler"),
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop("Yes, Of course!"); // Return value
|
||||
}),
|
||||
TextButton(
|
||||
child: Text("Oui"),
|
||||
onPressed: () {
|
||||
addEvents(events); // Return value
|
||||
}),
|
||||
],
|
||||
);
|
||||
|
||||
|
@ -4,6 +4,12 @@ import '../classes/descriptionImage.dart';
|
||||
import '../classes/alert.dart';
|
||||
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
||||
import 'package:flutter_gemini/flutter_gemini.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
|
||||
import 'dart:convert';
|
||||
|
||||
import '../variable/globals.dart' as globals;
|
||||
|
||||
void main() {
|
||||
runApp(MyApp());
|
||||
@ -60,6 +66,34 @@ class DisplayPictureScreenState extends State<DisplayPictureScreen>
|
||||
"L'IA de Google n'a pas su analyser l'image. Recommecer avec une autre");
|
||||
}
|
||||
|
||||
Future<void> searchEvents(String json) async {
|
||||
print(json);
|
||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
|
||||
Map<String, dynamic> jsonData = jsonDecode(json);
|
||||
var name = jsonData["name"];
|
||||
var place = jsonData["place"];
|
||||
var accessToken = prefs.getString("access_token") ?? "";
|
||||
|
||||
if (accessToken.isNotEmpty) {
|
||||
var urlGet = Uri.parse("${globals.api}/events?name=${name}");
|
||||
|
||||
var responseGet = await http.get(urlGet,
|
||||
headers: {HttpHeaders.cookieHeader: 'access_token=${accessToken}'});
|
||||
if (responseGet.statusCode == 200) {
|
||||
var events = jsonDecode(utf8.decode(responseGet.bodyBytes));
|
||||
print("reponse http : ${events.length}");
|
||||
if (events.length == 0) {
|
||||
showDescImageAddDialog(context, jsonData);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
showErrorDialog(context, "Erreur de token");
|
||||
}
|
||||
|
||||
//showDescImageAddDialog(context, message);
|
||||
}
|
||||
|
||||
Future<void> _getEventInfosFromImage() async {
|
||||
await dotenv.load();
|
||||
|
||||
@ -71,11 +105,10 @@ class DisplayPictureScreenState extends State<DisplayPictureScreen>
|
||||
gemini
|
||||
.textAndImage(
|
||||
text:
|
||||
"Peux-tu donner le nom, la date et le lieu de l'évènement sous format JSON avec les valeurs suivantes : name, place et date",
|
||||
"Peux-tu donner le nom, la date et le lieu de l'évènement sous format JSON avec les valeurs suivantes : name, place et date avec le format suivant YYYY-MM-ddTTHH:mm, et sans la présence de json dans la chaîne de caractère",
|
||||
images: [file.readAsBytesSync()],
|
||||
modelName: "models/gemini-1.5-flash-latest")
|
||||
.then((value) => showDescImageAddDialog(
|
||||
context, value?.content?.parts?.last.text ?? ''))
|
||||
.then((value) => searchEvents(value?.content?.parts?.last.text ?? ''))
|
||||
.catchError((e) => displayError);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user