build method

  1. @override
Widget build(
  1. BuildContext context
)
override

Describes the part of the user interface represented by this widget.

Implementation

@override
Widget build(BuildContext context) {
  widget._state = this;
  return Focus(
    focusNode: focusNode,
    onKeyEvent: (event) {
      if (event.type == KeyType.character &&
          (event.key == ' ' || event.key == '\r' || event.key == '\n')) {
        triggerEffect(
          _ripple,
          Point((widget.width ?? 10) ~/ 2, (widget.height ?? 3) ~/ 2),
        );
        _keyboardActivationTimer?.cancel();
        _keyboardActivationTimer = Timer.periodic(
          TuiAnimationConfig.vsyncInterval,
          (timer) {
            if (!mounted) {
              timer.cancel();
              return;
            }
            if (_ripple.status == AnimationStatus.completed) {
              reverseEffect(_ripple);
              widget.onPressed();
              timer.cancel();
              _keyboardActivationTimer = null;
            } else if (!_ripple.isAnimating &&
                _ripple.status != AnimationStatus.forward) {
              timer.cancel();
              _keyboardActivationTimer = null;
            }
          },
        );
        return true;
      }
      return false;
    },
    onFocusChange: (focused) {
      if (mounted) setState(() {});
      widget.onFocusChange?.call(focused);
    },
    child: _InkwellButtonRenderWidget(this),
  );
}