creta_counter 0.3.0
creta_counter: ^0.3.0 copied to clipboard
A beautiful, accessible, keyboard-friendly counter widget for Flutter.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:creta_counter/creta_counter.dart';
void main() {
runApp(const ExampleApp());
}
class ExampleApp extends StatelessWidget {
const ExampleApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Creta Counter Example',
theme: ThemeData(colorSchemeSeed: Colors.indigo, useMaterial3: true),
home: const ExampleHome(),
);
}
}
class ExampleHome extends StatefulWidget {
const ExampleHome({super.key});
@override
State<ExampleHome> createState() => _ExampleHomeState();
}
class _ExampleHomeState extends State<ExampleHome> {
int value = 3;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Creta Counter Example')),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
// Clamp behavior demo
CretaCounter(
width: 100,
height: 100,
radius: 16,
elevation: 2,
showButtons: true,
min: -5,
max: 5,
boundaryBehavior: CretaCounterBoundaryBehavior.clamp,
initialCount: value,
textStyle: const TextStyle(fontSize: 28, fontWeight: FontWeight.w700),
onChanged: (v) => setState(() => value = v),
),
const SizedBox(height: 16),
Text('Value (clamp): $value'),
const SizedBox(height: 32),
// Wrap behavior demo (separate state)
_WrapDemo(),
],
),
),
);
}
}
class _WrapDemo extends StatefulWidget {
@override
State<_WrapDemo> createState() => _WrapDemoState();
}
class _WrapDemoState extends State<_WrapDemo> {
int value = 1;
@override
Widget build(BuildContext context) {
return Column(
mainAxisSize: MainAxisSize.min,
children: [
CretaCounter(
width: 220,
height: 72,
radius: 12,
elevation: 1,
showButtons: true,
min: 0,
max: 3,
boundaryBehavior: CretaCounterBoundaryBehavior.wrap,
initialCount: value,
backgroundColor: Colors.teal.shade50,
foregroundColor: Colors.teal.shade900,
onChanged: (v) => setState(() => value = v),
),
const SizedBox(height: 8),
const Text('Wrap behavior demo (0..3)'),
Text('Value (wrap): $value'),
],
);
}
}