-
부트캠프창{창업일지}# 1주차 함수,클래스(실습)부트캠프{창} 2022. 6. 3. 23:40
주요 프로젝트때문에 회사에서도 야근하고 너무 힘들다 ㅠㅠ
기본설치 과정에서 시간을 너무 많이 버렸는데 에뮬레이터 실행 안되시는분들중에
구글 뒤져서 다 안되시는분들은 혹시 드라이버에 용량문제 일수도 있습니다 ㅠㅠ 최소 30기가 정도이상
여유를 주고 사용하시기를.....
함수는 여러 코드를 묶어둔 상자
*Main 역시 함수이다.
void say() {
say("철수");
}
void say(String person) {
print(person + "야 안녕?");
}
결과값 : 철수야 안녕?
say("철수"); <- 입력값
void say(String person) <- 입력값을 받을 변수
*person은 변수의 이름이기 때문에 원하는 다른 이름으로 변경가능
함수의 입력값을 받아주는 변수를 흔히 파라미터/매개변수/인자등 다양하게 부릅니다.
함수에 입력값을 여러개 받는 방법
void main() {
say("상필", "우섭야 안녕?");
}함수의 출력
void say(String from, String message) {
print("$from : $message");
}void main() {
String name = getName();
print(name);
}
String getName() {
return "상필";
}return -> 결과를 출력(반환)하는 방법
----------------------------------------------------------
void main() {
String bread = getBread("팥");
print(bread);
}
String getBread(String material) {
return material + "빵";
}*팥을 변수값으로 받고 출력을 빵과 + 팥으로 돌려준다
그러면 함수는 팥빵이 출력!!!
클래스
클래스 구성요소
속성 : 클래스 내의 변수
메소드 : 클래스 내의 함수
생성자 : 클래스 명과 동일한 함수
앞에서 배운 변수와 함수로 이루어져 있다.
class Bread {
// Bread 클래스가 가진 content 속성
String content = "팥";
}*클래스 내의 함수를 메소드라 부른다.
class Bread {
String content = "팥";
// Bread 클래스가 가진 getDescription 메소드
String getDescription() {
return "맛있는 $content빵입니다."; // 맛있는 팥빵입니다.
}
}*클래스 내의 함수를 메소드
인스턴스(Instance)
void main() {
// 인스턴스(instance) 만들기
Bread bread1 = Bread('팥'); // 클래스의 생성자를 호출하여 인스턴스(instance)를 만듭니다.
Bread bread2 = Bread('크림');
// 속성 호출
print(bread1.content); // 팥
print(bread2.content); // 크림
// 메소드 호출
print(bread1.getDescription()); // 맛있는 팥빵입니다.
print(bread2.getDescription()); // 맛있는 크림빵입니다.
}
class Bread {
String? content; // 클래스 속 변수를 속성(property)라고 부릅니다.
Bread(String core) { // 클래스명과 동일한 이 함수를 생성자(constructor)라고 부릅니다.
content = core;
}
String getDescription() { // 클래스 속 함수를 메소드(method)라고 부릅니다.
return "맛있는 $content빵입니다.";
}
}상속예제
void main() {
Bread bread = Bread();
Cookie cookie = Cookie();
print(bread.madeBy); // TousLesJours
print(cookie.madeBy); // TousLesJours
}
// 빵 : TousLesJours를 상속받음(=변수와 함수를 그대로 전달받음)
class Bread extends TousLesJours {
}
// 쿠키 : TousLesJours를 상속받음(=변수와 함수를 그대로 전달받음)
class Cookie extends TousLesJours {
}
// 뚜레쥬르
class TousLesJours {
String madeBy = "TousLesJours";
}- Dart의 모든 것은 Class로 구성
실습1 - Food Recipe 만들기
*최종코드import 'package:flutter/material.dart';
void main() {runApp(MyApp());}
class MyApp extends StatelessWidget {const MyApp({Key? key}) : super(key: key);
@overrideWidget build(BuildContext context) {return MaterialApp(debugShowCheckedModeBanner: false,home: HomePage(), // 홈페이지 보여주기);}}
class HomePage extends StatelessWidget {const HomePage({Key? key}) : super(key: key);
@overrideWidget build(BuildContext context) {// 음식 사진 데이터List<Map<String, dynamic>> dataList = [{"category": "수제버거",},{"category": "건강식",},{"category": "한식",},{"category": "디저트",},{"category": "피자",},{"category": "볶음밥",},];
// 화면에 보이는 영역return Scaffold(appBar: AppBar(iconTheme: IconThemeData(color: Colors.black),elevation: 0,backgroundColor: Colors.white,title: Text('Food Recipe',style: TextStyle(color: Colors.black,fontSize: 28,fontWeight: FontWeight.bold,)),actions: [IconButton(onPressed: () {}, icon: Icon(Icons.person_outline))],),body: Column(children: [Padding(padding: const EdgeInsets.all(8.0),child: TextField(decoration: InputDecoration(hintText: "상품을 검색해주세요.",border: OutlineInputBorder(borderSide: BorderSide(color: Colors.black),),suffixIcon: IconButton(icon: Icon(Icons.search),onPressed: () {},)),),),Divider(height: 1),Expanded(child: ListView.builder(itemCount: dataList.length,itemBuilder: (context, index) {String category = dataList[index]['category'];String imgUrl = dataList[index]['imgUrl'];
return Card(child: Stack(alignment: Alignment.center,children: [Image.network(imgUrl,width: double.infinity,height: 120,fit: BoxFit.cover,),Container(width: double.infinity,height: 120,color: Colors.black.withOpacity(0.5),),Text(category,style: TextStyle(color: Colors.white,fontSize: 36,),),],),);},),),]),drawer: Drawer(child: Column(children: [DrawerHeader(margin: const EdgeInsets.all(0),decoration: BoxDecoration(color: Colors.amber),child: SizedBox(width: double.infinity,child: Column(children: [CircleAvatar(radius: 36,backgroundColor: Colors.white,child: Padding(padding: const EdgeInsets.all(8.0),child: Image.network(width: 62,),),),SizedBox(height: 16),Text("닉네임",style: TextStyle(fontSize: 18,fontWeight: FontWeight.bold,),),Text("hello@world.com",style: TextStyle(fontSize: 16,),),],),),),AspectRatio(aspectRatio: 3 / 1,child: PageView(children: [],),),ListTile(title: Text("구매내역",style: TextStyle(fontSize: 18),),trailing: Icon(Icons.arrow_forward_ios,color: Colors.black,),onTap: () {Navigator.pop(context);},),ListTile(title: Text("저장한 레시피",style: TextStyle(fontSize: 18),),trailing: Icon(Icons.arrow_forward_ios,color: Colors.black,),onTap: () {Navigator.pop(context);},),],),),);}}교육시간이 부족해서 완전히 혼자서 하지는 못하고 교육자료를 보면서 따라 만들었다.
이번주 일요일날 복습을 해서 완전히 따라가야겠다 ㅠㅠ'부트캠프{창}' 카테고리의 다른 글
부트캠프창{창업일지}#2주차 샤잠(실습), 사업계획서 (0) 2022.06.10 부트캠프창{개발일지}# 1주차 Dart 문법 (0) 2022.06.03 부트캠프창{개발일지}#1주차 로그인 페이지 (0) 2022.06.03 부트캠프창{개발일지}1주차 #Flutter 이해하기 (0) 2022.06.03 부트캠프창{개발일지}1주차 #왜 Flutter? (0) 2022.06.03