Dart & Flutter에 관해 잘못된 정보가 너무 많이 퍼지고 있기 때문에 명확히 해야 할 필요성을 느낍니다. 사리:

- 전략 변경은 없습니다.
- 팀 규모에는 변화가 없습니다. 일부 DevOps 역할이 새로운 위치로 이동합니다.
- 2024년 로드맵은 계속됩니다.

이제 제품 이야기로 돌아오겠습니다!

 

플러터 계속 갈것인가? 

 

당분한은 계속 될것이다. 

다양한 플랫폼에서 강력하게

반응형

'IT & Programming > Dart and Flutter' 카테고리의 다른 글

[flutter] base64 encodeing  (0) 2024.03.26
flutter 비만도 계산기 3.0 에서 실행  (0) 2024.02.28
import 'dart:convert';

final rawString = 'id@id.com:password';
Codec<String, String> stringToBase64 = utf8.fuse(base64);
String token = stringToBase64.encode(rawString);

 

base64 인코딩 

반응형

비만도 계산기 

import 'package:flutter/material.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'BMI Demo',
      theme: ThemeData(
        primarySwatch: Colors.green,
      ),
      home: BmiMain(),
    );
  }
}

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

  @override
  State<BmiMain> createState() => _BmiMainState();
}

class _BmiMainState extends State<BmiMain> {
  final _formKey = GlobalKey<FormState>();
  final _heightController = TextEditingController();
  final _weightController = TextEditingController();

  @override
  void dispose(){
    _heightController.dispose();
    _weightController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('비만도 계산기'),
      ),
      body: Container(
        padding: const EdgeInsets.all(16.8),
        child: Form(
          key: _formKey ,
          child: Column(
            children: [
              TextFormField(
                decoration: InputDecoration(
                border: OutlineInputBorder(),
                  hintText: '키',
              ),
                controller: _heightController,
                keyboardType: TextInputType.number,
                validator:(value){
                  if(value!.trim().isEmpty){
                    return '키를 입력하세요';
                  }
                  return null;
                }
              ),
              SizedBox(
                height: 16.8,
              ),
              TextFormField(
                decoration: InputDecoration(
                  border: OutlineInputBorder(),
                  hintText: '몸무게',
                ),
                controller: _weightController,
                keyboardType: TextInputType.number,
                validator:(value){
                  if(value!.trim().isEmpty){
                    return '몸무게를 입력하세요';
                  }
                  return null;
                }
              ),
              Container(
                margin: EdgeInsets.only(top: 16.8),
                alignment: Alignment.centerRight,
                child: ElevatedButton(
                  onPressed: (){
                    if (_formKey.currentState!.validate()){
                      //검증처리
                      Navigator.push(
                        context,
                        MaterialPageRoute(builder: (context)=> BmiResult(
                        double.parse(_heightController.text.trim()),
                        double.parse(_weightController.text.trim()))),
                      );
                    }
                  },
                  child: Text('결과'),
                ),
              )
            ],
          ),

        ),
      ),
    );
  }
}

class BmiResult extends StatelessWidget {

  final double height; // 키
  final double weight; // 몸무게

  BmiResult(this.height, this.weight); // 생성자

  @override
  Widget build(BuildContext context) {
    final bmi = weight / ((height / 100) * (height / 100));
    print('bmi : $bmi');

    return Scaffold(
      appBar: AppBar(
        title: Text('비만도 계산기'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(_calcBmi(bmi),
              style: TextStyle(fontSize: 36),
            ),
            SizedBox(
              height: 16,
            ),
            _buildIcon(bmi),

          ],
        ),
      ),
    );
  }

  String _calcBmi(double bmi) {
    var result = '저체중';
    if (bmi >= 35) {
      result = '고도비만';
    } else if (bmi >= 30) {
      result = '2 단계 비만';
    } else if (bmi >= 25) {
      result = '1 단계 비만';
    } else if (bmi >= 23) {
      result = '과체중';
    } else if (bmi >= 18.5) {
      result = '정상';
    }
    return result;
  }

  Widget _buildIcon(double bmi) {
    if (bmi >= 23) {
      return Icon(
        Icons.sentiment_very_dissatisfied,
        color: Colors.red,
        size: 100,
      );
    } else if (bmi >= 18.5) {
      return Icon(
        Icons.sentiment_satisfied,
        color: Colors.green,
        size: 100,
      );
    } else {
      return Icon(
        Icons.sentiment_dissatisfied,
        color: Colors.orange,
        size: 100,
      );
    }
  }
}

 

반응형

'IT & Programming > Dart and Flutter' 카테고리의 다른 글

[Flutter] 2024년 어떻게? 계속될것인가?  (0) 2024.05.03
[flutter] base64 encodeing  (0) 2024.03.26

+ Recent posts