๊ธฐ๋ณธ์ ์ผ๋ก import ๋ฐฉ๋ฒ์ package:ํ๋ก์ ํธ๋ช
/(lib๊ฐ ๋ฃจํธ์ผ๋ ํดํฐ ๋ฃจํธ)/(import ํ ํ์ผ๋ช
) ์ผ๋ก importํ๋ฉด ๋๋ค.
๊ทธ๋ฐ๋ฐ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค๋ณด๋ฉด import ์ค์ด ๋ง์์ง๋๋ฐ, ๋์ค์ ํผ์ ์ ์ผ์ผํฌ ์ฌ์ง๊ฐ ์์. ๊ทธ๋์ Single Import ํจํด์ผ๋ก ํด๋ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊พธ์ด ์งํํ๋ฉด ํ๋ฒ์ import๋ฅผ ์งํ ํ ์ ์๋ค.
https://velog.io/@ximya_hf/manangesseveralimportinflutterbysinlgeimport

๊ฐ์์ ํด๋์ index.dart๋ฅผ ๋ง๋ค์ด ํด๋ ์์ ํจํค์ง๋ค์ ๋ฌถ์ด์ exportํ๋ค๋ฉด, ๋ค๋ฅธ ํ์ผ์์ index๋ฅผ importํด ์ฌ์ฉํ๋ฉด ํธํ๊ฒ ๊ด๋ฆฌ ํ ์ ์๋ค.
$ dart run single_import_generator -target=lib/presentation/common dir
๋๊ตฐ๊ฐ ๊ณ ๋ง๊ฒ ํจํค์ง๋ฅผ ๋ง๋ค์ด ๋์ด์ ํด๋น ์ปค๋งจ๋๋ฅผ ์คํํ๋ฉด ์์์ ์ ๋ฆฌ ํด ์ค๋ค.
์ฌ๋ฌ ํ์ด์ง๋ฅผ ๋ง๋ค ์ ์๋ ์์ ฏ. ์ด๋ป๊ฒ ๋๊ธธ์ง(๊ฐ๋ก๋ก ๋๊ธธ์ง, ์ธ๋ก๋ก ๋๊ธธ์ง..) ์ ๋๋ฉ์ด์ ์ ์ง์ ๊ฐ๋ฅํ๋ค. ์ ์ ์ผ๋ก ํ์ด์ง๋ฅผ ๋ง๋ค ์ ์์ง๋ง, ๋์ ์ผ๋ก๋ ์ฌ๋ฌ ํ์ด์ง๋ฅผ ์์ฑ ํ ์ ์๋ค.
class HomeScreen extends StatelessWidget {
const HomeScreen({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: PageView(
children: [1, 2, 3, 4, 5]
.map(
(e) => Image.asset('assets/image_$e.jpeg', fit: BoxFit.cover),
)
.toList()));
}
}
์ด๊ฐ์ด PageView๋ก ๊ฐ๊ฐ ๋ค๋ฅธ Image asset์ ์บ๋ฌ์ ํํ๋ก dpํ ์ ์๋ค.
๋์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ๋๋๋งํ๋ ์์ ฏ์ ์ง์นญํฉ๋๋ค. ๋์ ์ผ๋ก ๋ฐ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฉํ๊ธฐ ์ํด์ 2๊ฐ์ ๊ฐ์ฒด๊ฐ ํ์ํ๋ฐ,
class DynamicScreen extends StatefulWidget {
const DynamicScreen({super.key});
@override
State<DynamicScreen> createState() => _DynamicScreenState();
}
class _DynamicScreenState extends State<DynamicScreen> {
final PageController pageController = PageController();
@override
void initState() {
super.initState();
Timer.periodic(Duration(seconds: 3), (timer) {
int? currentPage = pageController.page?.toInt();
if (currentPage == null) return;
if (currentPage == 4) {
currentPage = 0;
} else {
currentPage++;
}
pageController.animateToPage(currentPage,
duration: Duration(milliseconds: 500), curve: Curves.ease);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: PageView(
controller: pageController,
children: [1, 2, 3, 4, 5]
.map(
(e) => Image.asset('assets/image_$e.jpeg', fit: BoxFit.cover),
)
.toList()));
}
}
์ค์ ๋ก ๋๋๋ง ๋์ด์ผํ๋ ์์ ฏ๊ณผ, ๋ฐ๋๋ ์ํ๋ฅผ ์บ์นํ๋ State๊ฐ ํ์ํ๋ค. State๋ฅผ ํตํด์ ์์ ฏ์ ๋น๋๊ธฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ ๋๋ฉ์ด์ , ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ํตํฉ์ ์ผ๋ก ํ ์ ์๊ฒ ๋๋ค.