Animação de efeito de rolagem Flutter Row
Aug 26 2020
Meu projeto atual tem uma linha rolável que funciona bem, mas não consigo encontrar uma maneira de fazer algum tipo de rolagem estática, onde quando você rola para um item, o item é centralizado automaticamente.
Isto é o que eu tenho atualmente:
Quando as cartas são roladas elas ficam na posição quando a rolagem termina:
O efeito que desejo obter é o cartão se alinhando no centro ao rolar para o próximo cartão.
Existe um widget que realmente funciona assim?
Respostas
1 meditat Aug 26 2020 at 14:35
Tente isso,
import 'package:flutter/material.dart';
final Color darkBlue = Color.fromARGB(255, 18, 32, 47);
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
final List<String> images = ["Me", "You", "Foo", "Baa"];
final PageController controller = PageController(viewportFraction:0.8);
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue),
debugShowCheckedModeBanner: false,
home: Scaffold(
body: PageView.builder(
controller: controller,
itemCount: images.length,
itemBuilder: (context,index){
return Container(
margin: EdgeInsets.all(16),
child: Center(child:Text(images[index])),
color: Colors.grey.shade200
);
}
),
),
);
}
}
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Text('Hello, World!', style: Theme.of(context).textTheme.headline4);
}
}
JoséLuna Aug 26 2020 at 15:06
A solução foi simples:
Padding(
padding: const EdgeInsets.symmetric(vertical: 80),
child: Container(
child: PageView(
controller: controller,
scrollDirection: Axis.horizontal,
pageSnapping: true,
physics: BouncingScrollPhysics(),
children: [CardMovie(), CardMovie(), CardMovie()],
),
),
)
usando o widget PageView e dando um padding top porque a altura do widget era a tela cheia.
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas