Skip to content
Snippets Groups Projects
Commit 990020f7 authored by john0609's avatar john0609
Browse files

Front&Back 연결

parent dc22e8d4
No related branches found
No related tags found
No related merge requests found
import 'dart:convert';
import 'package:english_words/english_words.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:http/http.dart' as http;
void main() {
runApp(MyApp());
runApp(
ChangeNotifierProvider(
create: (context) => MyAppState(),
child: const MyApp(),
),
);
}
class MyApp extends StatelessWidget {
......@@ -11,6 +19,7 @@ class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
var appState = context.watch<MyAppState>();
return ChangeNotifierProvider(
create: (context) => MyAppState(),
child: MaterialApp(
......@@ -19,28 +28,77 @@ class MyApp extends StatelessWidget {
useMaterial3: true,
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepOrange),
),
home: MyHomePage(),
),
home: FutureBuilder<List<WordPair>>(
future: appState.futureFavorites,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Center(child: CircularProgressIndicator());
} else if (snapshot.hasError) {
return Center(child: Text('Error: ${snapshot.error}'));
} else if (snapshot.hasData) {
return MyHomePage();
} else {
return const Center(child: Text('No favorites yet.'));
}
})),
);
}
}
class MyAppState extends ChangeNotifier {
var current = WordPair.random();
List<WordPair> favorites = [];
late Future<List<WordPair>> futureFavorites;
void getNext() {
current = WordPair.random();
notifyListeners();
MyAppState() {
futureFavorites = fetchFavorites();
}
var favorites = <WordPair>[];
Future<List<WordPair>> fetchFavorites() async {
final response = await http.get(Uri.parse('http://localhost:3000/likes'));
List<WordPair> list = [];
var jsonData = jsonDecode(response.body);
for (Map<String, dynamic> obj in jsonData) {
List<String> res = obj["id"].split('_');
list.add(WordPair(res[0], res[1]));
}
void toggleFavorite() {
favorites = [...list];
notifyListeners();
return list;
}
Future<void> toggleFavorite() async {
var uri = "http://localhost:3000/likes/${current.first}_${current.second}";
if (favorites.contains(current)) {
final http.Response resp = await http.delete(Uri.parse(uri));
if (resp.statusCode != 200) {
return;
}
favorites.remove(current);
favorites = [...favorites];
} else {
favorites.add(current);
final http.Response resp = await http.post(Uri.parse(uri),
headers: <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
},
body: jsonEncode(<String, dynamic>{
'collectionId': "${current.first}_${current.second}",
'like': true,
}));
if (resp.statusCode != 200) {
return;
}
favorites = [...favorites, current];
}
print(favorites);
notifyListeners();
}
void getNext() {
current = WordPair.random();
notifyListeners();
}
}
......
......@@ -75,6 +75,22 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
http:
dependency: "direct main"
description:
name: http
sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
url: "https://pub.dev"
source: hosted
version: "1.2.2"
http_parser:
dependency: transitive
description:
name: http_parser
sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
url: "https://pub.dev"
source: hosted
version: "4.0.2"
leak_tracker:
dependency: transitive
description:
......@@ -208,6 +224,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.7.2"
typed_data:
dependency: transitive
description:
name: typed_data
sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
url: "https://pub.dev"
source: hosted
version: "1.4.0"
vector_math:
dependency: transitive
description:
......@@ -224,6 +248,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "14.2.5"
web:
dependency: transitive
description:
name: web
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
url: "https://pub.dev"
source: hosted
version: "1.1.0"
sdks:
dart: ">=3.3.0 <4.0.0"
dart: ">=3.5.0 <4.0.0"
flutter: ">=3.18.0-18.0.pre.54"
......@@ -14,6 +14,7 @@ dependencies:
english_words: ^4.0.0
provider: ^6.0.0
http: ^1.2.2
dev_dependencies:
flutter_test:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment