[Flutter] - 10일차 과제

sang hyeok Lee·2023년 4월 4일
0

if문 연습

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  MyApp({super.key});

  var myMoney = 4500;
  var accountMoney = 4000000;
  var minTaxiFare = 4800;
  var iPadPrice = 1000000;
  var iPhonePrice = 960000;
  var friend1Name = "Teddy";
  var friend2Name = "Chris";
  var friend3Name = "Juno";
  var mathScore = [59, 24, 62, 44, 94, 61, 42];
  var minPassScore = 80;
  var emailAddress = 'dkanrjskclrl';
  var phoneNum = '010-1000-';
  var password = '1234';

  dynamic fn() {
    // 1
    // if (myMoney >= minTaxiFare) {
    //   print("택시 탐");
    // } else {
    //   print("걸어 감");
    // }

    // 2
    // if (myMoney >= iPadPrice) {
    //   print("아이패드 득템");
    // } else {
    //   print("핸드폰 써");
    // }

    // 3
    // if (accountMoney >= iPadPrice + iPhonePrice) {
    //   print("앱등이");
    // } else {
    //   print("연아햅틱 써라");
    // }

    // 4
    // if (accountMoney >= iPadPrice * 5) {
    //   print("아이패드 부자");
    // } else {
    //   print("노 아이패드");
    // }

    // 5
    // if ((friend1Name + friend2Name + friend3Name).length >= 10) {
    //   print("넘아김");
    // } else {
    //   print("안넘어감");
    // }

    // 6
    // if (mathScore[0] >= minPassScore) {
    //   print("합격");
    // } else {
    //   print("불합격");
    // }

    // 7
    // if (mathScore[0] + mathScore[1] > mathScore[3]) {
    //   print("높");
    // } else {
    //   print("낮");
    // }

    // 8
    // if (emailAddress.contains("@")) {
    //   print("굿");
    // } else {
    //   print("다시");
    // }

    //9
    // if (phoneNum.length == 13 && phoneNum.contains("-")) {
    //   print("굿");
    // } else {
    //   print("다시");
    // }

    // 10
    // if (RegExp(r'^010-?([0-9]{4})-?([0-9]{4})$').hasMatch(phoneNum)) {
    //   print(true);
    // } else {
    //   print(false);
    // }

    // 11
    // if (password.length < 8) {
    //   print("비밀번호는 최소 8자 이상을 입력해주세요");
    // }

    //12
    // if (password.length < 8) {
    //   print(false);
    // } else {
    //   print(true);
    // }
  }

  
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
          child: Column(
            children: [
              const Center(
                child: Text("과제"),
              ),
              TextButton(onPressed: fn, child: const Text("if문 실행"))
            ],
          ),
        ),
      ),
    );
  }
}

dart switch문

switch (변수명){
    case 값A :
        값이 A일 때 실행할 명령문;
        break;
    case 값B :
        값이 B일 때 실행할 명령문;
        break;
    case 값C :
        값이 C일 때 실행할 명령문;
        break;
    case 값D :
        값이 D일 때 실행할 명령문;
        break;
    case 값E :
        값이 E일 때 실행할 명령문;
        break;
    default :
        위의 값 A ~ E 모두 아닐때 실행할 명령문;
}

switch문에 경우 변수명은 값을 검사할 변수를 넣고 case문에 있는 값과 일치하면 명령문이 실행이 된다.
일치하는 값이 없으면 마지막 default문이 실행된다.
if문 보다는 빠르다는 장점이 있다.

해, 달, 별 위제 만들기

// main.dart
import 'package:flutter/material.dart';
import 'package:tenday/HomeScreen.dart';

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

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

  
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: HomeScreen(),
    );
  }
}
// HomeScreen.dart
import 'package:flutter/material.dart';

import 'ItemTile.dart';

class HomeScreen extends StatelessWidget {
  const HomeScreen({super.key});

  
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Padding(
          padding: const EdgeInsets.all(8.0),
          child: Column(
            children: const [
              ItmeTile(
                icon: Icons.sunny,
                name: "Sun",
              ),
              ItmeTile(
                icon: Icons.nightlight_round,
                name: "Moon",
              ),
              ItmeTile(
                icon: Icons.star,
                name: "Star",
              ),
            ],
          ),
        ),
      ),
    );
  }
}
// ItemTile.dart
import 'package:flutter/material.dart';

class ItmeTile extends StatefulWidget {
  const ItmeTile({
    super.key,
    required this.icon,
    required this.name,
  });

  final IconData icon;

  final String name;

  
  State<ItmeTile> createState() => _ItmeTileState();
}

class _ItmeTileState extends State<ItmeTile> {
  bool switching = false;

  
  Widget build(BuildContext context) {
    return ListTile(
      leading: Icon(
        widget.icon,
        color: switching ? Colors.yellow : Colors.grey,
      ),
      title: Text(
        widget.name,
        style: const TextStyle(
          color: Colors.black,
          fontSize: 20,
        ),
      ),
      trailing: const Icon(
        Icons.arrow_right,
        size: 30,
      ),
      onTap: () {
        switching = !switching;
        print(switching);
        setState(() {});
      },
    );
  }
}

textfield로 스위치

// HomeScreen.dart
import 'package:flutter/material.dart';

import 'ItemTile.dart';

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

  
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  final TextEditingController _textEditingController = TextEditingController();

  String content = "";
  String text = "";

  
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Padding(
          padding: const EdgeInsets.all(8.0),
          child: Column(
            children: [
              ItmeTile(
                icon: Icons.sunny,
                name: "Sun",
                textBool: content == "태양",
                text: text == "태양",
              ),
              ItmeTile(
                icon: Icons.nightlight_round,
                name: "Moon",
                textBool: content == "달",
                text: text == "달",
              ),
              ItmeTile(
                icon: Icons.star,
                name: "Star",
                textBool: content == "별",
                text: text == "별",
              ),
              TextField(
                controller: _textEditingController,
                onSubmitted: (value) {
                  content = value;
                  if (text.isEmpty) {
                    text = _textEditingController.text;
                  } else {
                    text = "";
                  }
                  setState(() {});
                },
                decoration: const InputDecoration(
                  border: OutlineInputBorder(
                    borderSide: BorderSide(
                      color: Colors.grey,
                    ),
                  ),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
// ItemTile.dart
import 'package:flutter/material.dart';

class ItmeTile extends StatefulWidget {
  const ItmeTile({
    super.key,
    required this.icon,
    required this.name,
    required this.textBool,
    required this.text,
  });

  final IconData icon;
  final String name;
  final bool textBool;
  final bool text;

  
  State<ItmeTile> createState() => _ItmeTileState();
}

class _ItmeTileState extends State<ItmeTile> {
  bool switching = false;

  
  Widget build(BuildContext context) {
    return ListTile(
      leading: Icon(widget.icon,
          color: widget.textBool
              ? widget.text
                  ? Colors.yellow
                  : Colors.grey
              : switching
                  ? Colors.yellow
                  : Colors.grey),
      title: Text(
        widget.name,
        style: const TextStyle(
          color: Colors.black,
          fontSize: 20,
        ),
      ),
      trailing: const Icon(
        Icons.arrow_right,
        size: 30,
      ),
      onTap: () {
        switching = !switching;

        setState(() {});
      },
    );
  }
}
profile
개발자 되기

0개의 댓글