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

home2 게시판 Flutter 게시판 instagram 강의에서 내용이 없이 사진을 게시할 시에

instagram 강의에서 내용이 없이 사진을 게시할 시에

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

    해피쇼
    참가자
    a라는 내용이 setUserContent에 계속 남아 저번 a를 반영하여 아무 내용이 없이 사진을 게시해도
    똑같은 내용만 나오는데 이를 해결할 방법이 있을까요???
    setUserContent(a)함수를 수정하거나 @override Widget build 부분의  setUserContent(text) 부분을
    if 함수로 변경하면 null<->string 비호환 경고 구문이 나와 이틀째 고생이네요. 하단은 지금까지 코딩한
    내용입니다. 항상 양질의 강의 감사합니다.
    
    
    import 'package:flutter/material.dart';
    import 'package:instagram/style.dart' ;
    import 'package:http/http.dart' as http;
    import 'dart:convert';
    import 'package:flutter/rendering.dart';
    import 'package:image_picker/image_picker.dart';
    import 'dart:io';
    void main() {
      runApp(MaterialApp(
        theme: 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 = 0;
      var data = [];
      var userImage;
      var userContent;
      addMyData(){
        var myData = {
          'id': data.length,
          'image': userImage,
          'likes': 5,
          'date': 'July 25',
          'content': userContent,
          'liked': false,
          'user': 'John Kim'
        };
        setState((){
          data.insert(0, myData);
        });
          }
    
    
    
    
      setUserContent(a){
        setState((){
          userContent = a;
        });
      }
      @override
      void initState() {
        super.initState();
        getData();
      }
      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);
        data = result2;
      }
      @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.camera);
                  if(image != null){
                    setState((){
                      userImage = File(image.path);
                    });
                  }
                  Navigator.push(context,
                      MaterialPageRoute(builder: (c) => Upload(
                          userImage : userImage, setUserContent : setUserContent,
                          addMyData : addMyData,)
                      ));
                },
              )
            ],
          ),
          body: [bodyUI(data: data, addData : addData), Text('shop')]

    ,
          bottomNavigationBar: BottomNavigationBar(
              showSelectedLabels: false,
              showUnselectedLabels: false,
              onTap: (i){
                setState((){
                  tab = i;
                });
              },
              items: [
                BottomNavigationBarItem(icon: Icon(Icons.home_outlined), label: 'home'),
                BottomNavigationBarItem(icon: Icon(Icons.shopping_bag_outlined), label: 'shop')
              ]),
          );
      }
    }
    
    
    
    
    
    
    class bodyUI extends StatefulWidget {
      const bodyUI({Key? key, this.data, this.addData}) : super(key: key);
      final data;
      final addData;
      @override
      State<bodyUI> createState() => _bodyUIState();
    }
    class _bodyUIState extends State<bodyUI> {
      var scroll = ScrollController();
      getMoreData() 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){
            getMoreData();
          }
        });
      }
      @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: [
                widget.data[i]['image'].runtimeType == String
                    ? Image.network(widget.data[i]['image'])
                    : Image.file(widget.data[i]['image']),
                Container(
                  padding: EdgeInsets.all(20),
                  width: double.infinity,
                  constraints: BoxConstraints(maxWidth: 600),
                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      Text('좋아요 ${widget.data[i]['likes']}'),
                      Text(widget.data[i]['user']),
                      Text(widget.data[i]['content'])
                    ],
                  ),
                )
              ],
            );
          });
        } //if문 끝
        else {
          return Text('loading');
        }
      }
    }
    
    
    class Upload extends StatelessWidget {
      const Upload({Key? key, this.userImage, this.setUserContent, this.addMyData}) : super(key: key);
      final userImage;
      final setUserContent;
      final addMyData;
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          resizeToAvoidBottomInset: false,
          appBar: AppBar(
            actions: [
              IconButton(onPressed: (){
                addMyData();
                }, icon: Icon(Icons.send))
            ],
            leading: IconButton(onPressed: (){
              Navigator.pop(context);},
                icon: Icon(Icons.close)),
          ),
          body: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Image.file(userImage,  height: MediaQuery.of(context).size.height - 500 ,
              alignment: Alignment.centerRight,),
              TextField(decoration: InputDecoration(labelText: '내용적기', prefixText: 'XOX'), onChanged: (text){
                setUserContent(text);
              }, ),
            ],
          ),
        );
      }
    }
    
     
    #42078

    codingapple
    키 마스터
    글발행같은걸 완료하면 userContent 변수를 '' 로 만들거나 그래봅시다
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 호 / 개인정보관리자 : 박종흠