12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- import 'dart:math' as math;
- import 'package:flutter/material.dart';
- import 'package:photos/ente_theme_data.dart';
- class DynamicFAB extends StatelessWidget {
- final bool isKeypadOpen;
- final bool isFormValid;
- final String buttonText;
- final Function onPressedFunction;
- const DynamicFAB({
- Key key,
- this.isKeypadOpen,
- this.buttonText,
- this.isFormValid,
- this.onPressedFunction,
- }) : super(key: key);
- @override
- Widget build(BuildContext context) {
- if (isKeypadOpen) {
- return Container(
- decoration: BoxDecoration(
- boxShadow: [
- BoxShadow(
- color: Theme.of(context).backgroundColor,
- spreadRadius: 200,
- blurRadius: 100,
- offset: const Offset(0, 230),
- )
- ],
- ),
- width: double.infinity,
- child: Row(
- mainAxisAlignment: MainAxisAlignment.end,
- children: [
- FloatingActionButton(
- heroTag: 'FAB',
- backgroundColor:
- Theme.of(context).colorScheme.dynamicFABBackgroundColor,
- foregroundColor:
- Theme.of(context).colorScheme.dynamicFABTextColor,
- onPressed: isFormValid
- ? onPressedFunction
- : () {
- FocusScope.of(context).unfocus();
- },
- child: Transform.rotate(
- angle: isFormValid ? 0 : math.pi / 2,
- child: const Icon(
- Icons.chevron_right,
- size: 36,
- ),
- ), //keypad down here
- ),
- ],
- ),
- );
- } else {
- return Container(
- width: double.infinity,
- height: 56,
- padding: const EdgeInsets.symmetric(horizontal: 20),
- child: OutlinedButton(
- onPressed: isFormValid //var here
- ? onPressedFunction
- : null,
- child: Text(buttonText),
- ),
- );
- }
- }
- }
- class NoScalingAnimation extends FloatingActionButtonAnimator {
- @override
- Offset getOffset({Offset begin, Offset end, double progress}) {
- return end;
- }
- @override
- Animation<double> getRotationAnimation({Animation<double> parent}) {
- return Tween<double>(begin: 1.0, end: 1.0).animate(parent);
- }
- @override
- Animation<double> getScaleAnimation({Animation<double> parent}) {
- return Tween<double>(begin: 1.0, end: 1.0).animate(parent);
- }
- }
|