2주차 주간평가 - rlatkddbs99/Flutter GitHub Wiki

캡처

main.dart

import 'package:flutter/material.dart';

import 'OptionCard.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  List myMenu = [];

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
        floatingActionButton: FloatingActionButton.extended(
          onPressed: () {
            myMenu = [];
            setState(() {});
          },
          label: Text("초기화"),
        ),
        appBar: AppBar(
          backgroundColor: Colors.white,
          title: Text("분식왕 이테디 주문하기"),
          foregroundColor: Colors.black,
          elevation: 0,
        ),
        body: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text(
              "주문리스트",
              style: TextStyle(fontSize: 28, fontWeight: FontWeight.bold),
            ),
            Text(myMenu.toString()),
            SizedBox(
              height: 8,
            ),
            Text("음식",
                style: TextStyle(fontSize: 28, fontWeight: FontWeight.bold)),
            Expanded(
              child: GridView(
                gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                  crossAxisCount: 3,
                ),
                children: [
                  InkWell(
                    onTap: () {
                      myMenu.add("떡볶이");
                      setState(() {});
                    },
                    child: OptionCard(
                        foodName: '떡볶이',
                        imgUrl: "assets/images/option_bokki.png"),
                  ),
                  InkWell(
                    onTap: () {
                      myMenu.add("맥주");
                      setState(() {});
                    },
                    child: OptionCard(
                        foodName: '맥주',
                        imgUrl: "assets/images/option_beer.png"),
                  ),
                  InkWell(
                    onTap: () {
                      myMenu.add("김밥");
                      setState(() {});
                    },
                    child: OptionCard(
                        foodName: '김밥',
                        imgUrl: "assets/images/option_kimbap.png"),
                  ),
                  InkWell(
                    onTap: () {
                      myMenu.add("오므라이스");
                      setState(() {});
                    },
                    child: OptionCard(
                        foodName: '오므라이스',
                        imgUrl: "assets/images/option_omurice.png"),
                  ),
                  InkWell(
                    onTap: () {
                      myMenu.add("돈가스");
                      setState(() {});
                    },
                    child: OptionCard(
                        foodName: '돈가스',
                        imgUrl: "assets/images/option_pork_cutlets.png"),
                  ),
                  InkWell(
                    onTap: () {
                      myMenu.add("라면");
                      setState(() {});
                    },
                    child: OptionCard(
                        foodName: '라면',
                        imgUrl: "assets/images/option_ramen.png"),
                  ),
                  InkWell(
                    onTap: () {
                      myMenu.add("우동");
                      setState(() {});
                    },
                    child: OptionCard(
                        foodName: '우동',
                        imgUrl: "assets/images/option_udon.png"),
                  ),
                ],
              ),
            )
          ],
        ),
      ),
    );
  }
}

OptionCard.dart

import 'package:flutter/material.dart';
import 'package:flutter/src/widgets/container.dart';
import 'package:flutter/src/widgets/framework.dart';

class OptionCard extends StatelessWidget {
  const OptionCard({super.key, required this.imgUrl, required this.foodName});
  final String imgUrl;
  final String foodName;
  @override
  Widget build(BuildContext context) {
    return Card(
      margin: EdgeInsets.all(4),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.stretch,
        children: [
          Expanded(
            child: Image.asset(
              imgUrl,
              fit: BoxFit.cover,
            ),
          ),
          Text(foodName),
          Text("담기"),
        ],
      ),
    );
  }
}
⚠️ **GitHub.com Fallback** ⚠️