-
글쓴이글
-
2022년 4월 22일 18:56 #32344
김요한참가자인스타그램 강좌 '선택한 이미지와 글을 게시물로 보여주라던 숙제'에서 코드를 치던중에
아래와같은 에러가 발생합니다. 오타인가싶어서 5~6번 돌려보면서 확인했는데... 뭐가 문제인지 모르겠습니다.
import 'package:flutter/material.dart';
import './style.dart' as style;
import 'package:http/http.dart' as http;
import 'dart:convert';
import 'package:image_picker/image_picker.dart';
import 'dart:io';void main() {
runApp(
MaterialApp(
debugShowCheckedModeBanner: false,
theme: style.theme,
home: MyApp(),
),
);
}class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);@override
State<MyApp> createState() => _MyAppState();
}class _MyAppState extends State<MyApp> {
var tab = 1;
var data = [];
var userImage;
var userContent;setUserContent(a) {
setState(() {
userContent = a;
});
}addData(a) {
setState(
() {
data.add(a);
},
);
}getData() async {
var result = await http.get(
Uri.parse('https://codingapple1.github.io/app/data.json'),
);
var result2 = jsonDecode(result.body);
setState(() {
data = result2;
});
}@override
void initState() {
super.initState();
getData();
}@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
'Instagram',
),
actions: [
IconButton(
icon: Icon(Icons.add_box_outlined),
onPressed: () async {
var picker = ImagePicker();
var image = await picker.pickImage(
source: ImageSource.gallery); // 이미지피커 띠우는 기본기능
if (image != null) {
setState(
() {
userImage = File(image.path);
},
);
}Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Upload(
userImage: userImage,
setUserContent:setUserContent,
)),
);
},
iconSize: 30,
),
],
),
body: Home(data: data, addData: addData),
bottomNavigationBar: BottomNavigationBar(
showSelectedLabels: false,
showUnselectedLabels: false,
onTap: (i) {
setState(() {
tab = i;
});
},
items: [
BottomNavigationBarItem(icon: Icon(Icons.home_outlined), label: '홈'),
BottomNavigationBarItem(
icon: Icon(Icons.shopping_bag_outlined), label: '샵'),
],
),
);
}
}class Home extends StatefulWidget {
const Home({
Key? key,
this.data,
this.addData,
this.userContent,
}) : super(key: key);
final data;
final addData;
final userContent;@override
State<Home> createState() => _HomeState();
}class _HomeState extends State<Home> {
var scroll = ScrollController();getMore() async {
var result = await http
.get(Uri.parse("https://codingapple1.github.io/app/more1.json"));
var result2 = jsonDecode(result.body);
widget.addData(result2);
}@override
void initState() {
super.initState();
scroll.addListener(
() {
if (scroll.position.pixels == scroll.position.maxScrollExtent) {
getMore();
}
},
);
}@override
Widget build(BuildContext context) {
if (widget.data.isNotEmpty) {
return ListView.builder(
itemCount: widget.data.length,
controller: scroll,
itemBuilder: (context, index) {
return SizedBox(
height: 380,
child: Column(
children: [
Image.network(widget.data[index]['image'], width: 300),
SizedBox(
width: 300,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'좋아요 ${widget.data[index]['likes']}',
style: TextStyle(fontWeight: FontWeight.bold),
),
Text(widget.data[index]['user']),
Text(widget.data[index]['content']),
],
),
)
],
),
);
},
);
} else {
return Text('loading');
}
}
}class Upload extends StatelessWidget {
const Upload({Key? key, this.userImage}) : super(key: key);
final userImage;@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
actions: [
IconButton(
onPressed: () {},
icon: Icon(Icons.send),
)
],
),
body: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Image.file(
userImage,
width: 300,
height: 300,
),
Text('이미지업로드화면'),
TextField(
onChanged: (text) {
setUserContent(text);
},
),
TextField(),
IconButton(
icon: Icon(Icons.close),
onPressed: () {
Navigator.pop(context);
},
)
],
),
);
}
} -
글쓴이글
- 답변은 로그인 후 가능합니다.