-
글쓴이글
-
2022년 1월 26일 13:25 #25789
이성호참가자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 MyApp extends StatefulWidget {
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'));
if (result.statusCode == 200){
var result2 = jsonDecode(result.body);
setState((){
data = result2;});
}else{Text('데이터를 받아 올수 없음');}
//Dio 패키지 찾아보기
}
@override
void initState() {
// TODO: implement initState
super.initState();
getData();}
@override
Widget build(BuildContext context) {return Scaffold(
appBar: AppBar(
title: Text('Instagram'),
actions: [
IconButton(onPressed: (){}, icon: Icon(Icons.add_box_outlined), iconSize: 30,)],
),
body: [Home(data : data), Text('샵페이지')], //[FutureBuilder(future:data, builder:(){},~~
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}) : 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() {
// TODO: implement 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: 3,
controller: scroll,
itemBuilder: (c,i){
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Image.network(widget.data[i]['image']),
Text('좋아요 ${widget.data[i]['likes']}'),
Text('글쓴이'),
Text(widget.data[i]['content']),
]
);
});
}else{
return CircularProgressIndicator();
}
}
}getMore() 부분에서
widget.addData(result2); 이부분이 에러가 납니다.
어떻게 수정해야 할까요?
-
글쓴이글
- 답변은 로그인 후 가능합니다.