6 글 보임 - 1 에서 6 까지 (총 6 중에서)
-
글쓴이글
-
2024년 11월 23일 10:50 #133046
이재준참가자오늘도 질문이 있습니다... 최대한 혼자 해보려고 해서 아직 답도 안본 상태입니다. 코드가 좀 길긴 한데
import 'package:flutter/material.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(home: MyApp())); }
class MyApp extends StatefulWidget { MyApp({super.key}); // ----------------------------------본체 함수--------------------------------------------- @override State<MyApp> createState() => _MyAppState(); }
class _MyAppState extends State<MyApp> { var tab = 0; var datalist = []; var userImage;
plusdata(a){ setState(() { datalist.add(a); }); } getdata() async{ var result = await http.get(Uri.parse('https://codingapple1.github.io/app/data.json')); var result2 = jsonDecode(result.body); if (result.statusCode == 200) { print(result2); } else { throw Exception('실패함ㅅㄱ'); } setState(() { datalist = result2; }); }
@override void initState() { super.initState(); getdata(); } // ---------------------------------------본체---------------------------------------------------- @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Instagram'), actions: [IconButton(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: (c){return Upload(userImage: userImage, plusdata: plusdata);})); }, icon: Icon(Icons.add_box_outlined))], bottom: PreferredSize(preferredSize: Size.fromHeight(1), child: Container(height: 0.2,color: Colors.black,)) ), body: [context1(datalist : datalist, plusdata: plusdata) , Text('샵입니다')]
, bottomNavigationBar: BottomAppBar( height: 60, child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ IconButton(onPressed: (){setState(() { tab=0; });}, icon: Icon(Icons.home_outlined)), IconButton(onPressed: (){setState(() { tab=1; });}, icon: Icon(Icons.shopping_bag_outlined)), ], ) ,), ); } }// ----------------------------------바디에 있는 context1 함수---------------------
class context1 extends StatefulWidget { context1({super.key,this.datalist,this.plusdata}); final datalist; final plusdata;
@override State<context1> createState() => _context1State(); }
class _context1State extends State<context1> { var scroll = ScrollController();
moredata()async{
var result3 = await http.get(Uri.parse('https://codingapple1.github.io/app/more1.json')); var result4 = jsonDecode(result3.body); if (result3.statusCode==200){ widget.plusdata(result4); } else { throw Exception('또실패함 ㅅㄱ'); }
}
@override void initState() { super.initState(); scroll.addListener((){ if(scroll.position.maxScrollExtent == scroll.position.pixels){ moredata(); } }); }
// ----------------------------------------body context1 본체---------------------------------- @override Widget build(BuildContext context) { if(widget.datalist.isNotEmpty){ return ListView.builder( controller: scroll, itemCount: widget.datalist.length, itemBuilder: (context,i){ return Column( children: [ Container(padding: EdgeInsets.all(3),child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text(widget.datalist[i]['user']), Text(widget.datalist[i]['date'.toString()]) ], ),), Image.network(widget.datalist[i]['image']), Container( constraints: BoxConstraints(maxWidth: 600), padding: EdgeInsets.all(20), width: double.infinity, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(widget.datalist[i]['likes'].toString()), Row(children: [ Text(widget.datalist[i]['user']), SizedBox(width: 10), Text(widget.datalist[i]['content']), ],) ], ), ), ], ); }); } else{ return CircularProgressIndicator(); }
} }
class Upload extends StatelessWidget { Upload({super.key,this.userImage,this.plusdata}); // ------------업로드 함수-------------- final userImage; final plusdata;
var content = TextEditingController();
var name = TextEditingController();
var date = TextEditingController();
var likes = TextEditingController();
// --------------업로드 본체------------ @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(automaticallyImplyLeading: false, leading: IconButton(onPressed: (){Navigator.pop(context);},icon: Icon(Icons.close)), actions: [IconButton(onPressed: (){plusdata({"name":name.text,"image":userImage.path,"date":date.text,"likes":likes.text.toString(),"content":content.text}); Navigator.pop(context);}, icon: Icon(Icons.check))],),
body: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ TextField(controller: name, decoration: InputDecoration(hintText: '이름'),), TextField(controller: date, decoration: InputDecoration(hintText: '날짜'),), Container(padding: EdgeInsets.all(15),child: Image.file(userImage, width: 300,height: 300,fit: BoxFit.cover)), Text('이미지업로드화면'), TextField(controller: content, decoration: InputDecoration(hintText: '본문내용'),), TextField(controller: likes, decoration: InputDecoration(hintText: '좋아요 수'),),
], ) );
} } 이렇게 짜고 발행 버튼을 누르면 왜 오류가 날까요 선생님..
-
글쓴이글
6 글 보임 - 1 에서 6 까지 (총 6 중에서)
- 답변은 로그인 후 가능합니다.