diff --git a/lib/fx_7_border_beam/border_beam.dart b/lib/fx_7_border_beam/border_beam.dart index fcaeee6..b737b21 100644 --- a/lib/fx_7_border_beam/border_beam.dart +++ b/lib/fx_7_border_beam/border_beam.dart @@ -1,19 +1,9 @@ import 'package:flutter/material.dart'; -import 'dart:math' as math; import 'dart:ui' as ui; class BorderBeam extends StatefulWidget { - final Widget child; - final double duration; - final double borderWidth; - final Color colorFrom; - final Color colorTo; - final Color staticBorderColor; - final BorderRadius borderRadius; - final EdgeInsetsGeometry padding; - const BorderBeam({ - Key? key, + super.key, required this.child, this.duration = 15, this.borderWidth = 1.5, @@ -22,7 +12,16 @@ class BorderBeam extends StatefulWidget { this.staticBorderColor = const Color(0xFFCCCCCC), this.borderRadius = const BorderRadius.all(Radius.circular(12)), this.padding = EdgeInsets.zero, - }) : super(key: key); + }); + + final BorderRadius borderRadius; + final double borderWidth; + final Widget child; + final Color colorFrom; + final Color colorTo; + final double duration; + final EdgeInsetsGeometry padding; + final Color staticBorderColor; @override _BorderBeamState createState() => _BorderBeamState(); @@ -30,8 +29,14 @@ class BorderBeam extends StatefulWidget { class _BorderBeamState extends State with SingleTickerProviderStateMixin { - late AnimationController _controller; late Animation _animation; + late AnimationController _controller; + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } @override void initState() { @@ -44,44 +49,34 @@ class _BorderBeamState extends State _controller.repeat(); } - @override - void dispose() { - _controller.dispose(); - super.dispose(); - } - @override Widget build(BuildContext context) { - return AnimatedBuilder( - animation: _animation, - builder: (context, child) { - return CustomPaint( - painter: BorderBeamPainter( - progress: _animation.value, - borderWidth: widget.borderWidth, - colorFrom: widget.colorFrom, - colorTo: widget.colorTo, - staticBorderColor: widget.staticBorderColor, - borderRadius: widget.borderRadius, - ), - child: Padding( - padding: widget.padding, - child: widget.child, - ), - ); - }, + return Padding( + padding: EdgeInsets.all(widget.borderWidth / 2), + child: AnimatedBuilder( + animation: _animation, + builder: (context, child) { + return CustomPaint( + painter: BorderBeamPainter( + progress: _animation.value, + borderWidth: widget.borderWidth, + colorFrom: widget.colorFrom, + colorTo: widget.colorTo, + staticBorderColor: widget.staticBorderColor, + borderRadius: widget.borderRadius, + ), + child: Padding( + padding: widget.padding, + child: widget.child, + ), + ); + }, + ), ); } } class BorderBeamPainter extends CustomPainter { - final double progress; - final double borderWidth; - final Color colorFrom; - final Color colorTo; - final Color staticBorderColor; - final BorderRadius borderRadius; - BorderBeamPainter({ required this.progress, required this.borderWidth, @@ -91,6 +86,13 @@ class BorderBeamPainter extends CustomPainter { required this.borderRadius, }); + final BorderRadius borderRadius; + final double borderWidth; + final Color colorFrom; + final Color colorTo; + final double progress; + final Color staticBorderColor; + @override void paint(Canvas canvas, Size size) { final rect = Rect.fromLTWH(0, 0, size.width, size.height);