Skip to content
Snippets Groups Projects
Commit f51e9f58 authored by Jingeun Lee's avatar Jingeun Lee
Browse files

complate

parent 7b6d5b34
Branches main
No related tags found
No related merge requests found
import 'package:english_words/english_words.dart'; import 'package:english_words/english_words.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
void main() { void main() {
runApp(MyApp()); runApp(MyApp());
...@@ -26,18 +28,109 @@ class MyApp extends StatelessWidget { ...@@ -26,18 +28,109 @@ class MyApp extends StatelessWidget {
class MyAppState extends ChangeNotifier { class MyAppState extends ChangeNotifier {
var current = WordPair.random(); var current = WordPair.random();
late Future<List<WordPair>> futureFavorites;
final String host = 'localhost:3000';
final String path = '';
var favorites = <WordPair>[];
final Map<String, String> headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'accept-language': 'ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7',
'cache-control': 'no-cache',
'pragma': 'no-cache',
'priority': 'u=0, i',
'sec-ch-ua': '"Chromium";v="136", "Google Chrome";v="136", "Not.A/Brand";v="99"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"macOS"',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36',
};
void printResponse(http.Response response, String operation) {
print('$operation response status: ${response.statusCode}');
print('$operation response body: ${response.body}');
}
MyAppState(){
futureFavorites = fetchFavorites();
}
Future<List<WordPair>> fetchFavorites() async {
try {
var response = await http.get(
Uri.http(host, path + '/likes'),
headers: headers,
);
printResponse(response, 'Fetch favorites');
if (response.statusCode != 200) {
throw Exception('Failed to fetch favorites: ${response.statusCode} - ${response.body}');
}
var json = jsonDecode(response.body);
List<WordPair> getFavorites = [];
for (var e in json) {
getFavorites.add(WordPair(e['id'].split('_')[0], e['id'].split('_')[1]));
}
favorites = [...getFavorites];
notifyListeners();
return favorites;
} catch (e) {
print('Error fetching favorites: $e');
return [];
}
}
void getNext() { void getNext() {
current = WordPair.random(); current = WordPair.random();
notifyListeners(); notifyListeners();
} }
var favorites = <WordPair>[];
void toggleFavorite() { Future<void> deleteFavorites() async {
try {
var response = await http.delete(
Uri.http(host, path + '/likes/${current.first}_${current.second}'),
headers: headers,
);
printResponse(response, 'Delete favorite');
if (response.statusCode != 200) {
throw Exception('Failed to delete favorite: ${response.statusCode} - ${response.body}');
}
} catch (e) {
print('Error deleting favorite: $e');
rethrow;
}
}
Future<void> addFavorite() async {
try {
var response = await http.post(
Uri.http(host, path + '/likes/${current.first}_${current.second}'),
headers: headers,
);
printResponse(response, 'Add favorite');
if (response.statusCode != 200) {
throw Exception('Failed to add favorite: ${response.statusCode} - ${response.body}');
}
} catch (e) {
print('Error adding favorite: $e');
rethrow;
}
}
void toggleFavorite() async {
if (favorites.contains(current)) { if (favorites.contains(current)) {
await deleteFavorites();
favorites.remove(current); favorites.remove(current);
} else { } else {
await addFavorite();
favorites.add(current); favorites.add(current);
} }
notifyListeners(); notifyListeners();
......
...@@ -75,6 +75,22 @@ packages: ...@@ -75,6 +75,22 @@ packages:
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.0" version: "0.0.0"
http:
dependency: "direct main"
description:
name: http
sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b"
url: "https://pub.dev"
source: hosted
version: "1.4.0"
http_parser:
dependency: transitive
description:
name: http_parser
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
url: "https://pub.dev"
source: hosted
version: "4.1.2"
leak_tracker: leak_tracker:
dependency: transitive dependency: transitive
description: description:
...@@ -151,10 +167,10 @@ packages: ...@@ -151,10 +167,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: provider name: provider
sha256: "489024f942069c2920c844ee18bb3d467c69e48955a4f32d1677f71be103e310" sha256: "4abbd070a04e9ddc287673bf5a030c7ca8b685ff70218720abab8b092f53dd84"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.1.4" version: "6.1.5"
sky_engine: sky_engine:
dependency: transitive dependency: transitive
description: flutter description: flutter
...@@ -208,6 +224,14 @@ packages: ...@@ -208,6 +224,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.4" version: "0.7.4"
typed_data:
dependency: transitive
description:
name: typed_data
sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
url: "https://pub.dev"
source: hosted
version: "1.4.0"
vector_math: vector_math:
dependency: transitive dependency: transitive
description: description:
...@@ -224,6 +248,14 @@ packages: ...@@ -224,6 +248,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "14.3.1" version: "14.3.1"
web:
dependency: transitive
description:
name: web
sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
url: "https://pub.dev"
source: hosted
version: "1.1.1"
sdks: sdks:
dart: ">=3.7.0-0 <4.0.0" dart: ">=3.7.0-0 <4.0.0"
flutter: ">=3.18.0-18.0.pre.54" flutter: ">=3.18.0-18.0.pre.54"
...@@ -14,6 +14,7 @@ dependencies: ...@@ -14,6 +14,7 @@ dependencies:
english_words: ^4.0.0 english_words: ^4.0.0
provider: ^6.0.0 provider: ^6.0.0
http: ^1.4.0
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment