Animation d'effet de défilement Flutter Row

Aug 26 2020

Mon projet actuel a une ligne défilante qui fonctionne bien, mais je ne trouve pas de moyen de faire une sorte de défilement statique, où lorsque vous faites défiler jusqu'à un élément, l'élément est centré automatiquement.

Voici ce que j'ai actuellement:

Lorsque les cartes défilent, elles restent dans la position à la fin du défilement:

L'effet que je veux accomplir est que la carte s'aligne au centre lors du défilement vers la carte suivante.

Y a-t-il un widget qui fonctionne réellement comme ça?

Réponses

1 meditat Aug 26 2020 at 14:35

Essaye ça,

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

La solution était simple:

 Padding(
      padding: const EdgeInsets.symmetric(vertical: 80),
      child: Container(
        child: PageView(
          controller: controller,
          scrollDirection: Axis.horizontal,
          pageSnapping: true,
          physics: BouncingScrollPhysics(),
          children: [CardMovie(), CardMovie(), CardMovie()],
        ),
      ),
    )

en utilisant le widget PageView et en donnant un haut de remplissage car la hauteur du widget était le plein écran.