// 이곳에 쓴 내용은 앱 만들기라는 버킷리스트를 달성하기 위해 플러터를 공부하면서 정리하고 있는 내용입니다.
플러터에 대해 아는 것이 거의 없기 때문에 정리하면서 오류가 있을 수 있습니다.
오류를 발견하신 분은 댓글 남겨 주시면 감사하겠습니다.
위젯 생명주기
StatelessWidget vs. StatefulWidget(위젯 클래스와 스테이트 클래스로 구성)
-상태변경이 없는 생명주기
-StatefulWidget 생성자의 매개변수가 변경됐을 때 생명주기
-State 자제적으로 build()를 재실행할 때 생명주기
각 내용이 어려움으로 그냥 이런 게 있나 보다 하고 넘어가자.
Timer
Timer() : 첫 번째 매개변수는 대기기간 Duration으로 입력, 두 번째 매개변수 실행할 콜백함수 입력
예) Tmer(Duration(seconds: 3), (Timer timer){print('hello')} (3초 후 hello 출력)
Timer.periodic() : 주기적으로 콜백함수 실행
예) Timer.periodic(Duration(seconds: 3), (Timer timer){print('hello')} (3초마다 hello 출력)
이미지 추가, pubspec.yaml, 프로젝트 초기화하기
구현하기(Boxfit, 상태바 색깔 변경, 타이머 추가)
BoxFit.
-contain: 부모 위젯에 맞춰 크기 조정. 가로나 세로 중 채울 수 있는 크기만큼 조정, 가로, 세로 비율은 유지
-cover:부모 위젯 전체를 덮는 선에서 최소한 크기로 조절
-fill: 이미지 비율을 무시하고 부모 위젯 이미지 비율로 조절
-none: 원본 이미지 크기와 비율을 그대로 사용
-scaleDown: 이미지를 중앙 정렬하고 부모 위젯이 이미지보다 작으면 이미지 크기를 줄여서 부모 위젯에 맞춤
타이머를 추가하려면 statelessWidget에서 statefulWidget으로 바꿔야 한단다. 또, import: 'dart:async'; 추가함.
타이머는 initStat() 함수와 같이 쓴다고..
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'dart:async';
class HomeScreen extends StatefulWidget {
const HomeScreen({super.key});
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
final PageController pageController = PageController();
@override
void initState() {
super.initState();
Timer.periodic(
Duration(seconds: 3),
(timer) {
int? nextPage = pageController.page?.toInt();
if(nextPage == null){
return;
}
if(nextPage == 4) {
nextPage = 0;
} else{
nextPage++;
}
pageController.animateToPage(
nextPage,
duration: Duration(milliseconds: 500),
curve: Curves.ease,
);
},
);
}
@override
Widget build(BuildContext context) {
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light);
return Scaffold(
body: PageView(
controller: pageController,
children: [1, 2, 3, 4, 5]
.map(
(number) => Image.asset(
'asset/img/image_$number.jpeg',
fit: BoxFit.cover,
),
)
.toList(),
),
);
}
}
쉼표 때문에 오류가 두 번 있었으나 잘 해결이 되었다.
지난번 책보다는 수월하게 흘러가는 기분이다. 방심은 금물..
오늘 공부도 이것으로 끄읏~
'버킷리스트 > 앱 만들기' 카테고리의 다른 글
오공완(with 코드팩토리의 플러터 프로그래밍) #10 (디지털 주사위) (0) | 2024.07.30 |
---|---|
오공완(with 코드팩토리의 플러터 프로그래밍) #9 (만난 지 며칠 U&I) (0) | 2024.07.29 |
오공완(with 코드팩토리의 플러터 프로그래밍) #7-2 (블로그 웹 앱) (1) | 2024.07.22 |
오공완(with 코드팩토리의 플러터 프로그래밍) #7 (블로그 웹 앱) (0) | 2024.07.21 |
오공완(with 코드팩토리의 플러터 프로그래밍) #6 (etc.) (2) | 2024.07.20 |