개발이 좋아서/Flutter가 좋아서
![[flutter] 미세먼지 앱_마무리_repository, screen, utils, main](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWtJa1%2FbtrYquo4MgL%2FQOmQ2fDuJHXvvQsfHTAEL1%2Fimg.png)
[flutter] 미세먼지 앱_마무리_repository, screen, utils, main
1) 2) repository /stat_repository.dart import 'package:dio/dio.dart'; import 'package:dusty_dust/const/data.dart'; import 'package:dusty_dust/model/stat_model.dart'; class StatRepository { static Future fetchData(ItemCode itemCode) async { final response = await Dio().get( 'http://apis.data.go.kr/B552584/ArpltnStatsSvc/getCtprvnMesureLIst', queryParameters: { 'serviceKey': serviceKey, 'returnTyp..
![[flutter] 미세먼지 앱_마무리_const, model](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwMoRl%2FbtrYsABzpy3%2F8mrR0CLW8Es0tTDWQZv301%2Fimg.png)
[flutter] 미세먼지 앱_마무리_const, model
1) 2) const /color.dart import 'package:flutter/material.dart'; const primaryColor = Color(0xFF009688); const darkColor = Color(0xFF00675B); const lightColor = Color(0xFF52C7B8); /data.dart /regions.dart const regions = [ '서울', '경기', '대구', '충남', '인천', '대전', '경북', '세종', '광주', '전북', '강원', '울산', '전남', '부산', '제주', '충북', ]; /status_level.dart import 'package:dusty_dust/model/status_model.dart'; impor..
![[flutter] 미세먼지 앱_최종 마무리_component, container](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFnOf1%2FbtrYphpWpKI%2FnJkT6LXAyT41PH1guSlw01%2Fimg.png)
[flutter] 미세먼지 앱_최종 마무리_component, container
1) 2) component /card_title.dart import 'package:flutter/material.dart'; class CardTitle extends StatelessWidget { final String title; final Color backgroundColor; const CardTitle({ Key? key, required this.title, required this.backgroundColor, }) : super(key: key); @override Widget build(BuildContext context) { return Container( child: Padding( padding: const EdgeInsets.all(4.0), child: Text( ti..
![[flutter] 미세먼지 앱_Hive_연습](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb70t7V%2FbtrYf1tVKe1%2F6CYgqi8pO3m53yMSKWQTxK%2Fimg.png)
[flutter] 미세먼지 앱_Hive_연습
1) 2) screen /test_screen.dart import 'package:dusty_dust/main.dart'; import 'package:dusty_dust/screen/test2_screen.dart'; import 'package:flutter/material.dart'; import 'package:hive_flutter/hive_flutter.dart'; class TestScreen extends StatefulWidget { const TestScreen({Key? key}) : super(key: key); @override State createState() => _TestScreenState(); } class _TestScreenState extends State { @..
![[flutter] 미세먼지 앱_데이터 모델링](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBGkmL%2FbtrXC0JzGqD%2FRQd2yuFGfhnxNZ9Xlfp610%2Fimg.png)
[flutter] 미세먼지 앱_데이터 모델링
1) 2) const /data.dart 3) model /stat_model.dart enum ItemCode { // 이황산가스 SO2, // 일산화탄소 CO, // 오존 O3, // 이산화질소 NO2, // 미세먼지 PM10, // 초미세먼지 PM25 } class StatModel { final double daegu; final double chungnam; final double incheon; final double daejeon; final double gyeongbuk; final double sejong; final double gwangju; final double jeonbuk; final double gangwon; final double ulsan; final double jeo..
![[flutter] 미세먼지 앱_UI구현](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRSrQj%2FbtrXCJmHJPj%2FDiKcqk2sPc0yTcY3e5FExK%2Fimg.png)
[flutter] 미세먼지 앱_UI구현
1) 2) component /card_title.dart import 'package:flutter/material.dart'; import '../const/color.dart'; class CardTitle extends StatelessWidget { final String title; const CardTitle({ Key? key, required this.title, }) : super(key: key); @override Widget build(BuildContext context) { return Container( child: Padding( padding: const EdgeInsets.all(4.0), child: Text( title, style: TextStyle( color: ..
![[flutter] 미세먼지 앱_정부 API 승인](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7pDf4%2FbtrXlgMWQ6k%2FbwN5773do2Sq2uzW8SR5k1%2Fimg.png)
[flutter] 미세먼지 앱_정부 API 승인
1) https://www.data.go.kr/index.do 공공데이터 포털 국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase www.data.go.kr 회원가입 이후 활용신청 클릭 후 마이페이지 들어가면 키를 확인할 수 있다
![[flutter] Scrollable Widgets_RefreshIndicator](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3fOxE%2FbtrXj0QZAZ2%2FJRX1T0PPisIiQN39UG68Uk%2Fimg.png)
[flutter] Scrollable Widgets_RefreshIndicator
1) 2) const /colors.dart import 'package:flutter/material.dart'; const rainbowColors = [ Colors.red, Colors.orange, Colors.yellow, Colors.green, Colors.blue, Colors.indigo, Colors.purple, ]; 3) layout /main_layout.dart import 'package:flutter/material.dart'; class MainLayout extends StatelessWidget { final String title; final Widget body; const MainLayout({ required this.title, required this.bod..