nopsuite_carousel_slider 0.0.3
nopsuite_carousel_slider: ^0.0.3 copied to clipboard
NopSuite carousel slider with indicator
import 'package:flutter/material.dart';
import 'package:nopsuite_carousel_slider/effects/worm_effect.dart';
import 'package:nopsuite_carousel_slider/nopsuite_carousel_slider.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(primarySwatch: Colors.blue),
debugShowCheckedModeBanner: false,
home: const HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({Key? key}) : super(key: key);
@override
HomePageState createState() => HomePageState();
}
class HomePageState extends State<HomePage> {
final controller = PageController(viewportFraction: 0.8, keepPage: true);
final pages = List.generate(
6,(index) => Container(
decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(16),
color: colors[index],
),
margin: const EdgeInsets.symmetric(horizontal: 4, vertical: 4),
child: SizedBox(
height: 280,
child: Center(
child: Text(
"Page $index",
style: const TextStyle(color: Colors.indigo),
)
),
),
)
);
@override
void initState() {
// TODO: implement initState
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("NopSuite Carousel slider")),
body: SafeArea(
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
const SizedBox(height: 10,),
NopSuiteCarouselSlider(
controller: controller,
count: pages.length,
itemBuilder: pages,
height: MediaQuery.of(context).size.height * 0.4,
effect: const WormEffect(
dotHeight: 8,
dotWidth: 20,
radius: 0,
dotColor: Colors.black26,
activeDotColor: Colors.black,
type: WormType.normal,
strokeWidth: 5,
spacing: 0
),
)
],
),
),
),
);
}
}
final colors = [
Colors.red.shade100,
Colors.green.shade100,
Colors.greenAccent.shade100,
Colors.amberAccent.shade100,
Colors.blue.shade100,
Colors.amber.shade100,
];