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

home2 게시판 Flutter 게시판 스크롤 숙제 질문

스크롤 숙제 질문

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 글쓴이
  • #90597

    쌔뮤얼
    참가자
    import 'package:flutter/material.dart';
    import './style.dart';
    import 'package:http/http.dart' as http;
    import 'dart:convert';
    import 'package:flutter/rendering.dart';
    void main() {
      runApp(
          MaterialApp(
            theme:theme,
            home: MyApp()
          )
      );
    }
    class MyApp extends StatefulWidget {
      const MyApp({super.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() {
        // TODO: implement initState
        super.initState();
        getData();
      }
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('Instagram'),
            actions: [
              IconButton(
                  onPressed: (){},
                  iconSize: 30,
                  icon: Icon(Icons.add_box_outlined)),
            ]),
          body: [Home(data : data), Text('shop')]

    , bottomNavigationBar: BottomNavigationBar( showSelectedLabels: false, showUnselectedLabels: false, onTap: (i){ setState(() { tab = i; }); }, items: [ BottomNavigationBarItem( label : "home", icon: Icon(Icons.home_outlined)), BottomNavigationBarItem( label: "shop", icon: Icon(Icons.shopping_bag_outlined)) ], ),
        );
      }
    }
    class Home extends StatefulWidget {
      const Home ({Key? key, this.data, this.addData}) : super(key: key);
      final data;
      final addData;
      @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(() {
          print(getMore());
          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: (c, i){
            return 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();
        }
      }
    }
    
     
     
    E/flutter (11861): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: NoSuchMethodError: The method 'call' was called on null.
    E/flutter (11861): Receiver: null
    E/flutter (11861): Tried calling: call(_Map len:7)
    E/flutter (11861): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:38:5)
    E/flutter (11861): #1 _HomeState.getMore (package:instagram/main.dart:97:19)
    E/flutter (11861): <asynchronous suspension>
    어떻게 해결해야하는지 모르겠습니다.
    
    
    		
    	
    #90622

    codingapple
    키 마스터
    자식으로 addData라는 state 안보낸듯요
    #90626

    쌔뮤얼
    참가자
    위에 setState으로 보낸거 아닌가요??
    
    #90642

    codingapple
    키 마스터
    Home(data : data) 여기 자식쓰는곳에 추가합시다
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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