flipcart_package 0.0.1
flipcart_package: ^0.0.1 copied to clipboard
A flip animation widget for Flutter that allows users to create a flip effect between front and back widgets.
import 'package:flutter/material.dart';
import 'package:flipcart_package/flipcart_package.dart';
void main() => runApp(const FlipInputApp());
class FlipInputApp extends StatelessWidget {
const FlipInputApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: FlipInputScreen(),
);
}
}
class FlipInputScreen extends StatefulWidget {
const FlipInputScreen({super.key});
@override
State<FlipInputScreen> createState() => _FlipInputScreenState();
}
class _FlipInputScreenState extends State<FlipInputScreen> {
String? selectedFront;
String? selectedBack;
final List<String> widgetOptions = ['Text', 'ElevatedButton', 'Icon'];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('FlipCart Widget Picker')),
body: Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
children: [
DropdownButtonFormField<String>(
decoration: const InputDecoration(labelText: 'Front Widget'),
items: widgetOptions.map((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
onChanged: (val) {
setState(() {
selectedFront = val;
});
},
),
const SizedBox(height: 20),
DropdownButtonFormField<String>(
decoration: const InputDecoration(labelText: 'Back Widget'),
items: widgetOptions.map((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
onChanged: (val) {
setState(() {
selectedBack = val;
});
},
),
const SizedBox(height: 30),
Center(
child: (selectedFront != null && selectedBack != null)
? FlipWidget(
width: 250,
height: 250,
frontWidget: buildWidgetFromSelection(selectedFront!),
backWidget: buildWidgetFromSelection(selectedBack!),
)
: const Text('Select front and back widgets to preview.'),
),
],
),
),
);
}
Widget buildWidgetFromSelection(String selection) {
switch (selection) {
case 'Text':
return const Center(
child: Text(
'This is a Text widget',
style: TextStyle(fontSize: 18, color: Colors.black),
),
);
case 'ElevatedButton':
return Center(
child: ElevatedButton(
onPressed: () {},
child: const Text('Press Me'),
),
);
case 'Icon':
return const Center(
child: Icon(Icons.star, size: 50, color: Colors.amber),
);
default:
return const SizedBox.shrink();
}
}
}