일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- AnimationController
- typescript
- Firebase
- MSSQL
- 깃허브
- 파이어베이스
- MS-SQL
- 오류
- 애니메이션
- 닷넷
- Maui
- .NET
- 자바스크립트
- db
- 플러터
- Animation
- 리엑트
- MVVM
- JavaScript
- 마우이
- 함수
- 바인딩
- spring boot
- listview
- Flutter
- page
- HTML
- React JS
- Binding
- GitHub
- Today
- Total
개발노트
10. [Flutter] card_swiper 위젯 사용하기 본문
Flutter의 장점 중 하나는, 구현하고자 하는 위젯들이 대부분 이미 만들어져있다는 것에 있습니다.
위젯을 사용하려면 pubspec.yaml 이나 node.js 혹은 flutter SDK 터미널로 설치만 해주시면됩니다.
오늘은 card_swiper라는 위젯을 프로젝트에 설치하여 사용해 보도록하겠습니다.
기존의 ListView는 스크롤 시, item 상관없이 슬라이드 되었다면, card_swiper는 각각의 item에 할당되어있는 index를 통해 하나씩 스크롤되는 점이 차이가 있으며, 그 밖에도 여러가지 속성을 이용하여 보다 깔끔한 ListView를 만들 수 있습니다.
(.NET MAUI에서 했던 CarouselView과 비슷하지만, 보다 사용하기 간편하고 멋집니다.)
링크: https://mroh1226.tistory.com/27
1. 우선 아래 링크로 가셔서 이 포스트에 다루는 위젯 버전이 최신버전을 확인하고 Widget을 설치합니다.
- 설치링크: https://pub.dev/packages/card_swiper/install
2. dependencies: 의 flutter: 하단에 card_swiper: ^2.0.4 (최신버전 확인필요)를 추가하시고 Ctrl + S 를 눌러주시면 아래와같이 설치가 진행됩니다.
3. 화면이될 dart 파일 내의 위젯에 아래 소스를 작성합니다.
page_theory.dart
import 'package:card_swiper/card_swiper.dart';
import 'package:flutter/material.dart';
class PageTheory extends StatelessWidget {
PageTheory({super.key});
final List<Image> imageList = [
Image.network('https://source.unsplash.com/random/1'),
Image.network('https://source.unsplash.com/random/2'),
Image.network('https://source.unsplash.com/random/3'),
Image.network('https://source.unsplash.com/random/4'),
Image.network('https://source.unsplash.com/random/5'),
Image.network('https://source.unsplash.com/random/6'),
Image.network('https://source.unsplash.com/random/7'),
Image.network('https://source.unsplash.com/random/9'),
Image.network('https://source.unsplash.com/random/10'),
Image.network('https://source.unsplash.com/random/11'),
Image.network('https://source.unsplash.com/random/12'),
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Padding(
padding: const EdgeInsets.symmetric(horizontal: 30, vertical: 50),
child: Center(
child: Expanded(
child: Swiper(
control: const SwiperControl(),
pagination:
const SwiperPagination(alignment: Alignment.bottomCenter),
itemCount: imageList.length,
viewportFraction: 1,
autoplay: true,
itemBuilder: (context, index) {
var images = imageList[index];
return Container(
padding:
const EdgeInsets.symmetric(horizontal: 10, vertical: 40),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(color: Colors.grey.withOpacity(0.5))
]),
child: images);
},
),
),
),
));
}
}
설명.1
Image 파일을 무료로 제공하는 사이트를 이용하여 Image.network로 item을 추가해줍니다.
(랜덤으로 이미지를 가져오도록 uri에 random을 붙이고 뒤에 숫자를 붙여 각각 다른 사진을 가져오도록 합니다. https://source.unsplash.com/random/)
- 이미지를 무료로 제공하는 Unsplash 링크: https://unsplash.com/developers
설명.2
card_swiper 패키지에서 사용할 수 있는 위젯은 Swiper() 이며, 위젯에 대해 간단하게 몇가지 속성들을 설명하겠습니다.
- autoPlay: bool값으로 값을 부여할 수 있으며, true 일 경우 자동으로 item들이 넘어갑니다.
- autoplayDisableOnInteraction: bool값으로 값이 true 일 경우 인터렉트가 발생하면 autoPlay를 멈춥니다.
- itemBuilder: 리스트뷰와 마찬가지로 item들이 어떻게 표현되고 어떤 item이 들어갈지 coontext와 index를 통해 구현하는 속성입니다.
- viewportFraction: 이전,현재,다음의 item을 가지고있는 Widget들 간의 간격을 나타내며 1이하의 소수점으로 값을 주고, 값이 작을 수록 양옆의 Widget들이 현재보여지는 Widget의 영역에 침범하여 보여지게 됩니다.
- Control: Widget에 양옆으로 넘길 수있는 <,> 버튼들을 만들어주며, WiperControl() 과 같은 위젯들을 함께 사용합니다.
- Pagination: 하단에 현재 item의 인덱스를 확인할 수 있도록 도와주는 점모양의 UI를 생성해줍니다. SwiperPagination() 을 같이 사용하며, 점ㅂ이 노출되는 위치를 변경할 수 있습니다.
빌드된 모습.
'앱 개발 > Flutter' 카테고리의 다른 글
12. [Flutter] 위젯 위치 이동시키기(with Transform) (0) | 2023.04.10 |
---|---|
11. [Flutter] 움직이는 이미지 사용하기 (with Lottie) (0) | 2023.04.10 |
9. [Flutter] 화면 전환 애니메이션 주기 (with Hero 위젯) (0) | 2023.03.31 |
8. [Flutter] Navigator.push(), pop() 화면 전환하기 (0) | 2023.03.31 |
7. [Flutter] ListView 사용하기 (0) | 2023.03.30 |