• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Flutter 게시판 스크롤위치 파악하는법과 더보기 요청_숙제부분 오류질문

스크롤위치 파악하는법과 더보기 요청_숙제부분 오류질문

  • 이 주제에는 1개 답변, 2명 참여가 있으며 codingapple3 년 전에 전에 마지막으로 업데이트했습니다.
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #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);
    ^^^^^^^

    #36344

    codingapple
    키 마스터

    addData 함수를 부모에서부터 가져오는거면 자식으로 보내고 등록까지 잘해야 쓸 수 있습니다 

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠