-
글쓴이글
-
2022년 6월 16일 10:58 #36310
이학준참가자import 'package:flutter/material.dart';
import './style.dart' as style;
import 'package:http/http.dart' as http;
import 'dart:convert';
import 'package:flutter/rendering.dart';void main() {
runApp(
MaterialApp(
theme: style.theme,
home: MyApp()
)
);
}
class Home extends StatefulWidget {
const Home({Key? key, this.data}) : super(key: key);
final data;@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) {
print(widget.data);
if(widget.data.isNotEmpty){
return ListView.builder(itemCount: 3, controller: scroll, itemBuilder: (c, i){
return Column(
children: [
//Image.network('https://codingapple1.github.io/kona.jpg'),
Container(
constraints: BoxConstraints(maxWidth: 600),
padding: EdgeInsets.all(20),
width: double.infinity,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Image.network(widget.data[i]['image']),
Text('좋아요 ${widget.data[i]['likes']}'),
Text(widget.data[i]['date']),
Text(widget.data[i]['content']),
],
),
)
],
);
});
}else{
return CircularProgressIndicator();
}}
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);@override
State<MyApp> createState() => _MyAppState();
}class _MyAppState extends State<MyApp> {
var tab = 0;
var data = [];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();
//var result = http.get( Uri.parse('https://codingapple1.github.io/app/data.json') );
}@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Instargram'),
actions: [
IconButton(
icon: Icon(Icons.add_box_outlined),
onPressed: (){},
iconSize: 30)
],
),
body: [Home(data : data), Text('샵페이지')], // PageView()??
bottomNavigationBar: BottomNavigationBar(
onTap: (i){
setState(() {
tab = i;
});
},
items: [
BottomNavigationBarItem(icon: Icon(Icons.home_outlined), label: '홈'),
BottomNavigationBarItem(icon: Icon(Icons.shopping_bag_outlined), label: '샵'),
],
),);
}
}
더 불러오는 기능을 몰라 영상을 참고하여 진행했습니다. 진행하면서 작성해보니 widget.addData(result2); 이 부분에 에러가 뜨면서 동작이 안됩니다. 어떻게 바꿔야 정상적으로 동작이 될까요?
에러 코드는 아래를 참고해주세요.
lib/main.dart:32:12: Error: The method 'addData' isn't defined for the class 'Home'.
- 'Home' is from 'package:instargram/main.dart' ('lib/main.dart').
Try correcting the name to the name of an existing method, or defining a method named 'addData'.
widget.addData(result2);
^^^^^^^ -
글쓴이글
- 답변은 로그인 후 가능합니다.