12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import 'package:app_flowy/workspace/presentation/widgets/toggle/toggle_style.dart';
- import 'package:flutter/widgets.dart';
- class Toggle extends StatelessWidget {
- final ToggleStyle style;
- final bool value;
- final void Function(bool) onChanged;
- final EdgeInsets padding;
- const Toggle({
- Key? key,
- required this.value,
- required this.onChanged,
- required this.style,
- this.padding = const EdgeInsets.all(8.0),
- }) : super(key: key);
- @override
- Widget build(BuildContext context) {
- return GestureDetector(
- onTap: (() => onChanged(value)),
- child: Padding(
- padding: padding,
- child: Stack(
- children: [
- Container(
- height: style.height,
- width: style.width,
- decoration: BoxDecoration(
- color: value ? style.activeBackgroundColor : style.inactiveBackgroundColor,
- borderRadius: BorderRadius.circular(style.height / 2),
- ),
- ),
- AnimatedPositioned(
- duration: const Duration(milliseconds: 150),
- top: (style.height - style.thumbRadius) / 2,
- left: value ? style.width - style.thumbRadius - 1 : 1,
- child: Container(
- height: style.thumbRadius,
- width: style.thumbRadius,
- decoration: BoxDecoration(
- color: style.thumbColor,
- borderRadius: BorderRadius.circular(style.thumbRadius / 2),
- ),
- ),
- ),
- ],
- ),
- ),
- );
- }
- }
|