FLUTTER, VSCODE, ANDROID STUDIO, IOS
DART
실전 창업 세션
Gather Town!! 저는 이런 창업을 할겁니다! 이런 분들과 함께 하고 싶어요!! 허허허!! 좋은 아이디어네욥! 여기 제 번호욥😄
‘너 내 동료가 되라!’
하프 마라톤 취미로 혼자 뛰는 접니다! 포기 그런거 배추 셀 때 쓰시고요. 핸드폰으로 영상 찍으면서 룰루 랄라 정도?
맥북이 고장나버린 관계로, 야심차게 클라우드 서버를 구매해서 어디서나 개발 할 수 있는 환경을 만드는 게 당면 과제!! ㅋㅋㅋ
잘 만들어서 자랑 할게요! 😄
(그렇지만 궁금한 점 있으면 댓글 남겨주세요. 댓글 기능이 있나?)
누구나 그럴싸한 계획을 갖고 있다. 쳐맞기 전까지는
-마이클 타이슨-
다음으로 CocoaPods을 설치해 보도록 하겠습니다.
💡 CocoaPods은 다른 사람이 만든 코드를 가져올 때 필요한 프로그램으로 Xcode와 함께 iOS 앱 개발시 필요합니다.아래 명령어를 복사해 터미널에서 붙여넣고 엔터를 눌러주세요.
## bash_profile 편집기로 열기
vi ~/.bash_profile
## 파일 가장 마지막 줄에 아래 두 문장 추가
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
## bash_pofile 다시 실행
source ~/.bash_profile
## Ruby 버전 확인
ruby -v
참고 사이트
루비 버전을 바꾸지 않는 rbenv
두 번째 레프트 "Emulator didn't connect within 60 seconds"
우리는 언제나 답을 알고 있다.
MAC BOOK 이라며 당당히 IOS EMULATOR를 켰더랬죠.
허나 보시다 싶이 Flutter requires Xcode 13 or higher. Download the lastest version or update vie the Mac App Store.라는 메시지를 Futter Doctor 가 리턴하고 있습니다.
오랜 세월을 함께 한 나의 전우는 현대전에는 참가 할 수 없는 퇴역인 줄도 모르고! ㅠㅜ....
허나 친절한 Android Emulator를 사용하니 문제 해결...
하루 반나절 정도 날렸습니다.ㅋㅋㅋ
아래는 금주의 과제!!
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: HomePage(), // 홈페이지 보여주기
);
}
}
class HomePage extends StatelessWidget {
const HomePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
// 음식 사진 데이터
List<Map<String, dynamic>> dataList = [
{
"category": "수제버거",
"imgUrl": "https://i.ibb.co/pnZK1rz/burger.jpg",
},
{
"category": "건강식",
"imgUrl": "https://i.ibb.co/7KLJjJV/salad.jpg",
},
{
"category": "한식",
"imgUrl": "https://i.ibb.co/0V4RVK4/korean-food.jpg",
},
{
"category": "디저트",
"imgUrl": "https://i.ibb.co/HhGRhds/dessert.jpg",
},
{
"category": "피자",
"imgUrl": "https://i.ibb.co/QdDtTvt/pizza.jpg",
},
{
"category": "볶음밥",
"imgUrl": "https://i.ibb.co/gt9npFZ/stir-fried-rice.jpg",
},
];
final PageController pageController = PageController(initialPage: 0);
// 화면에 보이는 영역
return Scaffold(
appBar: AppBar(
elevation: 0, //
backgroundColor: Colors.white, //
centerTitle: false, //
iconTheme: IconThemeData(color: Colors.black), //
title: Text(
"Food Recipe",
style: TextStyle(
color: Colors.black,
fontSize: 28, //ㅋㅋㅋ
fontWeight: FontWeight.bold),
),
actions: [
IconButton(
onPressed: () {
print("코드 반영 확인 7");
},
icon: Icon(Icons.perm_identity_outlined)),
],
),
body: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: TextField(
decoration: InputDecoration(
suffixIcon: IconButton(
onPressed: () {
print("검색 클릭!");
},
icon: Icon(Icons.search)),
hintText: '상품을 검색해주세요.',
border: OutlineInputBorder(
borderSide: BorderSide(color: Colors.black))),
),
),
Divider(height: 1),
Expanded(
child: ListView.builder(
itemCount: dataList.length,
itemBuilder: (context, index) {
return Container(
// alignment: Alignment.center,
// color: Colors.red,
// height: 250,
// width: double.infinity,
child: Stack(
alignment: Alignment.center,
children: [
Card(
margin: const EdgeInsets.all(8),
child: Image.network(
dataList[index]["imgUrl"],
width: double.infinity,
height: 120,
fit: BoxFit.cover,
),
),
Container(
width: double.infinity,
height: 120,
color: Colors.black.withOpacity(0.5),
),
Text(
dataList[index]["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,
// height: double.infinity,
child: Column(
children: [
Expanded(
child: CircleAvatar(
radius: 36,
backgroundColor: Colors.white,
// backgroundImage: Image.network(
// "https://i.ibb.co/CwzHq4z/trans-logo-512.png",
// fit: BoxFit.cover,
// width: 62,
// ).image,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Image.network(
"https://i.ibb.co/CwzHq4z/trans-logo-512.png",
width: 62,
),
),
),
),
SizedBox(
height: 16,
),
Text(
"닉네임",
style: TextStyle(
fontSize: 18,
fontWeight: FontWeight.bold,
),
),
Text(
"hello@world.com",
style: TextStyle(
fontSize: 16,
color: Colors.black,
),
)
],
),
)),
AspectRatio(
aspectRatio: 3 / 1,
child: PageView(
children: [
Image.network(
"https://i.ibb.co/0mXKmZq/banner-1.jpg",
// fit: BoxFit.fill,
),
Image.network(
"https://i.ibb.co/DDgYrJR/banner-2.jpg",
// fit: BoxFit.fill,
),
Image.network(
"https://i.ibb.co/v1RMHN4/banner-3.jpg",
// fit: BoxFit.fill,
),
Image.network(
"https://i.ibb.co/NmNsrr2/banner-4.jpg",
// fit: BoxFit.fill,
),
],
)),
ListTile(
title: Text(
"구매내역",
style: TextStyle(
fontSize: 18,
),
),
onTap: () {
Navigator.pop(context);
},
trailing: Icon(
Icons.arrow_forward_ios,
color: Colors.black,
),
),
ListTile(
title: Text(
"저장한 레시피",
style: TextStyle(
fontSize: 18,
),
),
onTap: () {
Navigator.pop(context);
},
trailing: Icon(
Icons.arrow_forward_ios,
color: Colors.black,
),
)
],
),
),
);
}
}
그렇다고 합니다. ㅋㅋ
그럼 20000