전체 글 23

dart : 클레스

class Car {   String name;   int price;   int maxSpeed; //   Car(String name, int price, int maxSpeed) { //     this.name = name; //     this.price = price; //     this.maxSpeed = maxSpeed; //   }// 위와 같이 쓰면 null 에러가 발생한다// 아래와 같이 수정한다  Car({required this.name, required this.price, required this.maxSpeed}); } void main() { //   Car bmw = new Car('x5', 1000, 250); // 초기화 할때는 아래와 같이 규칙에 따라서 진행한다. ..

2. 액자 만들기 - 아웃라인

1. 일단 'a', 'b'라고 써지는 페이지를 만든다2. 위의 두 페이지가 표시되고, 손으로 넘기면 넘어간다. 1번일반 stateless 위젯으로 간단한 페이지를 만든다.class page_a extends StatelessWidget {  const page_a({super.key});  @override  Widget build(BuildContext context) {    return Container(      child: const Text('a'),    );  }}class page_b extends StatelessWidget {  const page_b({super.key});  @override  Widget build(BuildContext context) {    return Co..

7. 시간 선택하기

최종 코드 import 'package:flutter/material.dart';import 'dart:async';import 'package:flutter/cupertino.dart';void main() {  runApp(const MyApp());}class MyApp extends StatelessWidget {  const MyApp({super.key});  @override  Widget build(BuildContext context) {    return MaterialApp(      debugShowCheckedModeBanner: false,      theme: ThemeData(        primarySwatch: Colors.blue,      ),      home: c..

"66일 습관혁명" 읽고

운동을 하라남의 험담은 자신에게 돌아온다쓰기 -> 블로그를 이용하라정약용 "굶어 죽는 사람은 거의다 게으른 사람"하늘은 게으른 사람을 싫어해서 벌을 내려 죽이는 것이다.뇌는 편안한 것을 좋아한다. 서앉,앉눕,눕자아무리 목표를 세워도 시간별로 구체적인 계획이 없으면 지키지 않는다GRIT - 포기하지 않는 정신기술사 시험을 위해서 66일간 매일 예상문제 답안을 작성SMART- Specific (구체적인), Measurable (측정가능한), Ambitious (야심찬), Realistic (현실적인), Time-Limited(마감이 있는)중간 목표를 세워라 - 주도면밀하고 구체적으로목표를 쪼개고, 쪼개라 - 1년 몇kg 이면 1개월 얼마, 1주일에 얼마 독서의 중요성운동하라 - 10km 구보를 매주 한다.글..

2024.11.10

6. 타이머 시간 선택 하기 - CupertinoTimerPicker

시중에 있는 책의 예제는 보통 이렇게 시간을 가게 하고 끝나는데...솔직히 누가 시간 정해진 타이머를 쓰는가... 시간을 내가 선택 하려면 어떻게 해야할지 찾아보니여러가지 시간 선택 위젯이 있지만, 나는 아이폰 스타일의 CupertinoTimerPicker 를 사용해 보도록 하겠다. 앞에서 만든 타이머 코드와 섞으면 헷갈리니 (나의 한계다)별도의 코드에 일단 시간만 선택해 보는 코드를 만들어 본다. 아래와 같이 기본 셋팅을 하고..class MyApp extends StatelessWidget {  const MyApp({super.key});  @override  Widget build(BuildContext context) {    return MaterialApp(      home: Scaffol..

5. 기능 추가하기 - pause 기능 만들기

앞에서 시작하고 나서 버튼을 바꿨으므로, 동일한 방법으로pause기능을 구현해 보기로 한다. 그전에 Timer.periodic 을 변수로 지정을 먼저 한다.(참고 -- 함수를 변수에 할당 (tistory.com)) var ttotal = 100; Timer? _timer; bool isRunning = false; 이렇게 _timer 변수를 만들고 변수에 시간을 할당한다.void start_btn() {    _timer = Timer.periodic(const Duration(seconds: 1), (Timer t) {      setState(() {        isRunning = true;        ttotal -= 1;      });    });  } 이렇게 할당하면 _timer 변수를 ..

4. 기능 추가하기 - 버튼 변경

타이머가 가기 전에 (시작하기 전에)는 버튼이 start 가 표시되고 타이머가 시작한 후에는 pause 버튼이 생기게 하려면 아래와 같이 ? : 연산을 이용하면 된다. (o.o) 신기 ElevatedButton(                onPressed: start_btn,                child: Text(isRunning ? 'Pause' : 'Start'),              ) 조건 ?  A : B 조건에 만족하면 A를 실행, 만족하지 않으면  B를 실행한다 즉 여기서는1. 실행하고 있는지 않은지 하는 isRunning 이라는 변수를 먼저 선언하고 false 로 둔다 2. start_btn 함수가 실행되면 값을 true로 변경 (실행하니까...)3. 그에 따라서 버튼은 'P..

3. 화면에 표시하기

ttotal 이라는 변수를 만들어서 100을 할당한다. 버튼이 눌리면 실행되는 함수에서 매 1초마다 ttotal에서 1씩 빼준다.class _stopWatchState extends StatestopWatch> {  var ttotal = 100;  void start_btn() {    Timer.periodic(const Duration(seconds: 1), (Timer t) {      print(ttotal);      ttotal -= 1;    });  } 컨테이너 안에 숫자도 ttotal로 바꿔준다.Container(height: 200, width: 200,                 decoration: const BoxDecoration(                    borde..

함수를 변수에 할당

dart이긴 하지만... 잘 안쓰던 방법이 갑자기 나오면 당황하게 마련이다. 공부할때는 책에서 본것 같은데 갑자기 코드에서 나오면 '뭔소리지?' 하게되는 것 같다. void main() {// 두 숫자를 더하는 함수를 변수에 할당 var add = (int a, int b) { return a + b; };// 함수를 호출int result = add(3, 4);print(result);// 출력: 7} 변에서 함수를 할당에서 재 활용이 가능하다. o.o 신기

flutter_기본 2024.07.16