시차 애니메이션 — FLUTTER
4036 단어 beginnersflutterdartprogramming
시차 효과 구현
패럴랙스 스크롤링 효과는 나머지 목록의 반대 방향으로 배경 이미지를 약간 밀어서 얻을 수 있습니다. 목록 항목이 화면 위로 이동하면 각 배경 이미지가 약간 아래로 이동합니다. 반대로 목록 항목이 화면 아래로 슬라이드되면 각 배경 이미지가 약간 위로 슬라이드됩니다. 시각적으로 시차가 발생합니다.
앱에서 카드 목록(예: 이미지 포함)을 스크롤하면 해당 이미지가 화면의 나머지 부분보다 더 느리게 스크롤되는 것처럼 보일 수 있습니다. 목록의 카드가 전경에 있는 것처럼 거의 보이지만 이미지 자체는 먼 배경에 멀리 떨어져 있습니다. 이 효과를 시차라고 합니다.
이 레시피에서는 카드 목록(일부 텍스트를 포함하는 둥근 모서리 포함)을 작성하여 시차 효과를 만듭니다. 각 카드에는 이미지도 포함되어 있습니다. 카드가 화면 위로 슬라이드되면 각 카드 내의 이미지가 아래로 슬라이드됩니다.
시차 항목을 보관할 목록 만들기
시차 스크롤 이미지 목록을 표시하려면 먼저 목록을 표시해야 합니다.
class ParallaxRecipe extends StatelessWidget {
const ParallaxRecipe({super.key});
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
child: Column(
children: const [],
),
);
}
}
텍스트 및 정적 이미지가 있는 항목 표시
각 목록 항목은 둥근 사각형 배경 이미지를 표시하여 전 세계 7개 위치 중 하나를 보여줍니다. 해당 배경 이미지 위에 쌓인 위치와 해당 국가의 이름은 왼쪽 하단에 있습니다. 배경 이미지와 텍스트 사이에는 배경에 대한 텍스트의 가독성을 향상시키는 어두운 그라데이션이 있습니다.
@immutable
class LocationListItem extends StatelessWidget {
const LocationListItem({
super.key,
required this.imageUrl,
required this.name,
required this.country,
});
final String imageUrl;
final String name;
final String country;
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16),
child: AspectRatio(
aspectRatio: 16 / 9,
child: ClipRRect(
borderRadius: BorderRadius.circular(16),
child: Stack(
children: [
_buildParallaxBackground(context),
_buildGradient(),
_buildTitleAndSubtitle(),
],
),
),
),
);
}
Widget _buildParallaxBackground(BuildContext context) {
return Image.network(
imageUrl,
fit: BoxFit.cover,
);
}
Widget _buildGradient() {
return Positioned.fill(
child: DecoratedBox(
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [Colors.transparent, Colors.black.withOpacity(0.7)],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
stops: const [0.6, 0.95],
),
),
),
);
}
Widget _buildTitleAndSubtitle() {
return Positioned(
left: 20,
bottom: 20,
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
name,
style: const TextStyle(
color: Colors.white,
fontSize: 20,
fontWeight: FontWeight.bold,
),
),
Text(
country,
style: const TextStyle(
color: Colors.white,
fontSize: 14,
),
),
],
),
);
}
}
//Next, add the list items to your ParallaxRecipe widget.
class ParallaxRecipe extends StatelessWidget {
const ParallaxRecipe({super.key});
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
child: Column(
children: [
for (final location in locations)
LocationListItem(
imageUrl: location.imageUrl,
name: location.name,
country: location.place,
),
],
),
);
}
}
위의 코드는 기본적인 이해를 위한 것입니다. 완전한 소스 코드를 원하시면 아래 링크를 확인하십시오. Flutter에서 시차 효과가 있는 앱을 만들었습니다.
Complete Source Code
안내나 도움이 필요하면 언제든지 문의하세요. 곧 답변 드리겠습니다.
감사!
Reference
이 문제에 관하여(시차 애니메이션 — FLUTTER), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/areedev/parallax-animation-flutter-3php텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)