-
스나이퍼팩토리 2주차 주간과제 키오스크앱만들기카테고리 없음 2023. 2. 5. 15:15
- 음식을 누르면 주문 리스트에 담기는 키오스크앱을 만들어봅니다.
- 음식이미지는 자유이며, 필요한 경우 위에 첨부된 파일을 이용하여도 됩니다.
- 하단에 떠있는 버튼을 누르면 지금까지 주문된 주문 리스트를 초기화합니다.
- 하단에 떠있는 버튼은 정중앙의 하단, 넓게 펴진 형태로 [ 초기화하기 ] 텍스트를 포함합니다.
- 음식이 보여지는 것은 [갤러리] 형태로 보여지게 하며, 검색을 통해 해결합니다.
- 그 외 UI 디자인은 자유입니다.
키오스크앱 예제 import 'package:flutter/material.dart';
void main() {runApp(MyApp());}
class MyApp extends StatelessWidget {const MyApp({super.key});
@overrideWidget build(BuildContext context) {return MaterialApp(home: MainPage(),);}}
class MainPage extends StatefulWidget {const MainPage({super.key});
@overrideState<MainPage> createState() => _MainPageState();}
class _MainPageState extends State<MainPage> {List<String> order = [];final List<Map> foodMenu = [{"image": "assets/images/option_bokki.png", "name": "떡볶이"},{"image": "assets/images/option_beer.png", "name": "맥주"},{"image": "assets/images/option_kimbap.png", "name": "김밥"},{"image": "assets/images/option_omurice.png", "name": "오므라이스"},{"image": "assets/images/option_pork_cutlets.png", "name": "돈까스"},{"image": "assets/images/option_ramen.png", "name": "라면"},{"image": "assets/images/option_udon.png", "name": "우동"}];
@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: Text('분식왕 이테디 주문하기',),centerTitle: true,backgroundColor: Colors.transparent,foregroundColor: Colors.black,elevation: 0,),body: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [Text('주문 리스트',style: TextStyle(fontSize: 30, fontWeight: FontWeight.bold),),Text(order.toString()),Padding(padding: const EdgeInsets.only(top: 8),child: Text('음식',style: TextStyle(fontSize: 30, fontWeight: FontWeight.bold),),),Expanded(child: GridView.count(crossAxisCount: 3,childAspectRatio: 1 / 1,mainAxisSpacing: 10,crossAxisSpacing: 10,children: List.generate(foodMenu.length, (index) {return GestureDetector(onTap: (() {setState(() {order.add(foodMenu[index]["name"]); //List.add(value)는 리스트의 맨 뒤에 value를 추가합니다. 인덱스는 0부터시작});}),child: Card(//자식위젯의 크기에 의해 크기가 결정되는 위젯child: Column(crossAxisAlignment: CrossAxisAlignment.start,children: [Expanded(child: Image.asset(foodMenu[index]["image"],width: MediaQuery.of(context).size.width,fit: BoxFit.cover,),),Text(foodMenu[index]["name"],style: TextStyle(fontWeight: FontWeight.bold),),Text('[담기]',style: TextStyle(color: Colors.black),)],),),);}),),)]),floatingActionButton: FloatingActionButton.extended(onPressed: () {setState(() {order.clear();});},label: Text('초기화하기'),),floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,),);}}구글링을 너무많이하고 찾아서 막 한거같아서 수업듣고 정리좀 하겠습니다.
하루종일 검색하면서 했더니 결과는 나왔습니다.
주말동안 어디 좀 갔다오니 시간이 생각보다 없네요..
Android Emulator - Pixel_XL_API_27_5554 2023-02-05 15-08-46.mp46.68MB[참고]
https://velog.io/@kjha2142/Flutter-GridView
https://eunoia3jy.tistory.com/106
https://eunoia3jy.tistory.com/105
https://m.blog.naver.com/chandong83/221890678439
https://shiningjean.tistory.com/76
https://velog.io/@tmdgks2222/FlutterDart-List-aljalddakkalsen