stacked_trio_carousel 1.2.0 copy "stacked_trio_carousel: ^1.2.0" to clipboard
stacked_trio_carousel: ^1.2.0 copied to clipboard

A flutter package provides a visually engaging card carousel with a stacked layout of three cards.

example/lib/main.dart

import 'package:example/gift_cards_example.dart';
import 'package:example/yu_gi_oh_cards_example.dart';
import 'package:flutter/material.dart';
import 'package:stacked_trio_carousel/stacked_trio_carousel.dart';

final RouteObserver routeObserver = RouteObserver();

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      navigatorObservers: [routeObserver],
      debugShowCheckedModeBanner: false,
      title: 'Stacked Trio Carousel Example',
      theme: ThemeData(
        colorScheme: const ColorScheme.dark(primary: Colors.grey),
        useMaterial3: true,
      ),
      // Switch between examples //
      home: const MyHomePage(),
      // home: const GiftCardsExample(),
      // home: const YuGiOhCardsExample(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
  late StackedTrioCarouselController _carouselController;

  @override
  void initState() {
    _carouselController = StackedTrioCarouselController(tickerProvider: this);
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    final List colors = [Colors.red, Colors.green, Colors.blue];
    return Theme(
      data: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      child: Scaffold(
        appBar: AppBar(
          centerTitle: true,
          elevation: 2,
          title: const Text("STC Example"),
        ),
        body: Column(
          children: [
            StackedTrioCarousel(
              height: 400,
              width: MediaQuery.of(context).size.width,
              background: Container(),
              params: StackedTrioCarouselParams(
                widgetHeight: 200,
                widgetWidth: 200,
              ),
              routeObserver: routeObserver,
              controller: _carouselController,
              onTap: (index) {
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => const SecondScreen()),
                );
              },
              children: colors
                  .map(
                    (color) => Container(
                      key: ValueKey(color),
                      decoration: BoxDecoration(
                        color: color,
                        borderRadius: BorderRadius.circular(25),
                      ),
                    ),
                  )
                  .toList(),
            ),
            ElevatedButton(
              onPressed: () {
                _carouselController.autoPlay
                    ? _carouselController.stopAutoPlay()
                    : _carouselController.startAutoPlay();
                setState(() {});
              },
              child: Text(
                _carouselController.autoPlay
                    ? "Stop Auto Play"
                    : "Start Auto Play",
              ),
            ),
          ],
        ),
      ),
    );
  }
}

class SecondScreen extends StatelessWidget {
  const SecondScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Theme(
      data: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      child: Scaffold(
        appBar: AppBar(
          centerTitle: true,
          elevation: 2,
          title: const Text('second screen'),
        ),
        body: const Center(child: Text('second screen')),
      ),
    );
  }
}
22
likes
160
points
553
downloads

Publisher

unverified uploader

Weekly Downloads

A flutter package provides a visually engaging card carousel with a stacked layout of three cards.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on stacked_trio_carousel