3강
309
10 câu hỏi đã được viết
import 'package:flutter/material.dart';
import 'package:image_search/model/Photo.dart';
import 'package:image_search/ui/photo_widget.dart';
import 'package:http/http.dart' as http;
class HomeScreen extends StatefulWidget {
const HomeScreen({Key? key}) : super(key: key);
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
final _controller = TextEditingController();
List<Photo> _photos = [];
Future<List<Photo>> fetch(String query) async {
final response = await http.get(Uri.parse(
'https://pixabay.com/api/?key=27171919-dd7273ea4c33cde4e8cbd583f&q=$query&image_type=photo'));
Map<String, dynamic> jsonResponse = jsonDecode(response.body);
Iterable hits = jsonResponse['hits'];
return hits.map((e) => Photo.fromJson(e)).toList();
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
centerTitle: true,
title: const Text(
'이미지 검색 앱',
style: TextStyle(color: Colors.black),
),
backgroundColor: Colors.white,
elevation: 0.0,
),
body: Column(
children: [
Padding(
padding: const EdgeInsets.all(16.0),
child: TextField(
controller: _controller,
decoration: InputDecoration(
border: const OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
),
suffixIcon: IconButton(
onPressed: () async {
final photos = await fetch(_controller.text);
setState(() {
_photos = photos;
});
},
icon: const Icon(Icons.search),
),
),
),
),
Expanded(
child: GridView.builder(
padding: const EdgeInsets.all(16.0),
itemCount: _photos.length,
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 16,
mainAxisSpacing: 16,
),
itemBuilder: (context, index) {
final photo = _photos[index];
return PhotoWidget(
photo: photo, <-- 이부분의 photo에서 에러가 발생
);
},
),
)
],
),
);
}
}
Câu trả lời 2
0
JSon to Dart null safe사이트에서 conver to dart로 변경을 한 소스이면 에러가 나는것 같습니다.
안드로이드 스튜디오에서 json to dart로 변경 후
photo_widget.dart에서 아래와 같이 변경 하니 에러가 나지 않습니다.
아래와 같이 하고 진행해도 괜찮을까요?
import 'package:flutter/material.dart';
import 'package:image_search/model/photo.dart';
class PhotoWidget extends StatelessWidget {
final Photo photo;
const PhotoWidget({
Key? key,
required this.photo,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
decoration: BoxDecoration(
borderRadius: const BorderRadius.all(Radius.circular(16.0)),
image: DecorationImage(
fit: BoxFit.cover,
image: NetworkImage(photo.previewURL!), <-- 이렇게 변경 함
),
),
);
}
}
0
혹시 해당 위치에 마우스 올렸을 때 에러 메시지가 뭐라고 나오나요?
아마도 타입이 안 맞는다고 할 거 같은데 PhotoWidget 생성자가 Photo 타입을 받는지 확인해 보시지요
MVVM, 클린 아키텍처 관련 질문 있습니다.
0
85
2
가끔씩 ui가 깨지는? 현상이 있어서 질문드립니다.
0
91
1
freezed 3.0 대응된 코드 깃헙에도 업데이트 해주실 수 있으신가요?
0
176
3
sealed class 사용시 기능은 동작하지만 Radio위젯에 선택 표시가 안되는 부분 질문
0
117
2
sealed class 사용시 The getter 'orderType' isn't defined for the type 'NoteOrder<dynamic>' 오류
0
92
2
유즈케이스 관련하여 질문 드립니다.
0
91
1
mockito사용시 오류 해결법
1
122
2
sealed class 사용 문의2
0
75
2
sealed class 사용 문의
0
116
2
freezed3.0에서 build시 when생성되지 않습니다.
0
263
2
Try implementing the missing methods, or make the class abstract. 문제해결 공유
0
236
2
This is likely caused by a misconfigured builder definition. 오류 해결 방법
1
315
3
강의 화면이 안보여요
0
133
3
Flutter에서 추천하는 Navigator, Router
0
322
2
The following ProgressEvent object was thrown resolving an image codec: [object ProgressEvent]
0
324
3
event와 ui_event
0
211
1
코드 색깔 관련 질문
0
207
1
Photo.fleezed.dart,photo.g.dart삭제시 에러
0
203
2
sealed class 적용 시...
0
325
1
클린 아키텍처 질문
0
307
1
sealed class 데이터 접근
0
323
1
서버에서 데이터를 가져와서 사용하는 경우...
0
230
1
뷰/뷰모델 작성 질문
0
269
1
freezed JsonKey 사용 예시 공유
1
789
1

