scroll 끝날때 데이터 추가하는 코드

정재한·2022년 9월 19일
0

앱개발

목록 보기
7/23
import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;

class Home extends StatefulWidget {
  
  const Home({this.data,this.addData, super.key});
  final data;
  final addData;

  @override
  State<Home> createState() => _HomeState();
}

class _HomeState extends State<Home> {

  final 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() {
    scroll.addListener(() {
      if(scroll.position.pixels == scroll.position.maxScrollExtent) {
        getMore();
      }
    });
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    print(widget.data);
    
   if(widget.data.isNotEmpty) {
    return ListView.builder(
      controller: scroll,
      itemCount: widget.data.length,
      itemBuilder: (context, index) {
        return Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Image.network(widget.data[index]['image']),
            Text(widget.data[index]['user']),
            Text(widget.data[index]['date']),
            Text('종아요: ${widget.data[index]['likes'].toString()}'),
            
            Text(widget.data[index]['content'])
          ],
        );
      },
    );
   } else {
    return const Center(
      child: CircularProgressIndicator(),
    );
   }
  }
}
class _MainScreenState extends State<MainScreen> {
  int tab = 0;
  var data = [];

  getData() async {
    var result = await http
        .get(Uri.parse('https://codingapple1.github.io/app/data.json'));
    var result2 = jsonDecode(result.body);
    setState(() {
      data = result2;
    });
  }

  addData(value) {
    setState(() {
      data.add(value);
    });
  }

  @override
  void initState() {
    super.initState();
    getData();
  }

0개의 댓글

관련 채용 정보