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

home2 게시판 Flutter 게시판 setUserContent isn't defiend.

setUserContent isn't defiend.

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

    김요한
    참가자

    인스타그램 강좌 '선택한 이미지와 글을 게시물로 보여주라던 숙제'에서 코드를 치던중에 

    아래와같은 에러가 발생합니다. 오타인가싶어서 5~6번 돌려보면서 확인했는데... 뭐가 문제인지 모르겠습니다.

     

    import 'package:flutter/material.dart';
    import './style.dart' as style;
    import 'package:http/http.dart' as http;
    import 'dart:convert';
    import 'package:image_picker/image_picker.dart';
    import 'dart:io';

    void main() {
      runApp(
        MaterialApp(
          debugShowCheckedModeBanner: false,
          theme: style.theme,
          home: MyApp(),
        ),
      );
    }

    class MyApp extends StatefulWidget {
      const MyApp({Key? key}) : super(key: key);

      @override
      State<MyApp> createState() => _MyAppState();
    }

    class _MyAppState extends State<MyApp> {
      var tab = 1;
      var data = [];
      var userImage;
      var userContent;

      setUserContent(a) {
        setState(() {
          userContent = a;
        });
      }

      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();
      }

      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text(
              'Instagram',
            ),
            actions: [
              IconButton(
                icon: Icon(Icons.add_box_outlined),
                onPressed: () async {
                  var picker = ImagePicker();
                  var image = await picker.pickImage(
                      source: ImageSource.gallery); // 이미지피커 띠우는 기본기능
                  if (image != null) {
                    setState(
                      () {
                        userImage = File(image.path);
                      },
                    );
                  }

                  Navigator.push(
                    context,
                    MaterialPageRoute(
                        builder: (context) => Upload(
                              userImage: userImage,
                              setUserContent:setUserContent,
                            )),
                  );
                },
                iconSize: 30,
              ),
            ],
          ),
          body: Home(data: data, addData: addData),
          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,
        this.addData,
        this.userContent,
      }) : super(key: key);
      final data;
      final addData;
      final userContent;

      @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) {
        if (widget.data.isNotEmpty) {
          return ListView.builder(
            itemCount: widget.data.length,
            controller: scroll,
            itemBuilder: (context, index) {
              return SizedBox(
                height: 380,
                child: Column(
                  children: [
                    Image.network(widget.data[index]['image'], width: 300),
                    SizedBox(
                      width: 300,
                      child: Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: [
                          Text(
                            '좋아요 ${widget.data[index]['likes']}',
                            style: TextStyle(fontWeight: FontWeight.bold),
                          ),
                          Text(widget.data[index]['user']),
                          Text(widget.data[index]['content']),
                        ],
                      ),
                    )
                  ],
                ),
              );
            },
          );
        } else {
          return Text('loading');
        }
      }
    }

    class Upload extends StatelessWidget {
      const Upload({Key? key, this.userImage}) : super(key: key);
      final userImage;

      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            actions: [
              IconButton(
                onPressed: () {},
                icon: Icon(Icons.send),
              )
            ],
          ),
          body: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Image.file(
                userImage,
                width: 300,
                height: 300,
              ),
              Text('이미지업로드화면'),
              TextField(
                onChanged: (text) {
                  setUserContent(text);
                },
              ),
              TextField(),
              IconButton(
                icon: Icon(Icons.close),
                onPressed: () {
                  Navigator.pop(context);
                },
              )
            ],
          ),
        );
      }
    }

     

     

     

    #32357

    codingapple
    키 마스터

    Upload 위젯 정의부분에 setUserContent 등록을 안한듯요 

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 호 / 개인정보관리자 : 박종흠