stack_wallet/lib/widgets/custom_buttons/blue_text_button.dart

66 lines
1.7 KiB
Dart
Raw Normal View History

2022-08-26 08:11:35 +00:00
import 'package:flutter/cupertino.dart';
import 'package:flutter/gestures.dart';
import 'package:stackwallet/utilities/text_styles.dart';
2022-09-21 00:46:07 +00:00
import 'package:stackwallet/utilities/theme/stack_theme.dart';
2022-08-26 08:11:35 +00:00
class BlueTextButton extends StatefulWidget {
const BlueTextButton({Key? key, required this.text, this.onTap})
: super(key: key);
final String text;
final VoidCallback? onTap;
@override
State<BlueTextButton> createState() => _BlueTextButtonState();
}
class _BlueTextButtonState extends State<BlueTextButton>
with SingleTickerProviderStateMixin {
late AnimationController controller;
late Animation<dynamic> animation;
late Color color;
@override
void initState() {
2022-09-21 00:46:07 +00:00
color = StackTheme.instance.color.buttonTextBorderless;
2022-08-26 08:11:35 +00:00
controller = AnimationController(
vsync: this,
duration: const Duration(milliseconds: 100),
);
animation = ColorTween(
2022-09-21 00:46:07 +00:00
begin: StackTheme.instance.color.buttonTextBorderless,
end: StackTheme.instance.color.buttonTextBorderless.withOpacity(0.4),
2022-08-26 08:11:35 +00:00
).animate(controller);
animation.addListener(() {
setState(() {
color = animation.value as Color;
});
});
super.initState();
}
@override
void dispose() {
controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return RichText(
textAlign: TextAlign.center,
text: TextSpan(
text: widget.text,
style: STextStyles.link2.copyWith(color: color),
recognizer: TapGestureRecognizer()
..onTap = () {
widget.onTap?.call();
controller.forward().then((value) => controller.reverse());
},
),
);
}
}