|
@@ -8,21 +8,21 @@ class CustomBanner extends StatefulWidget {
|
|
|
final ValueChanged<int> onTap;
|
|
|
final Curve curve;
|
|
|
|
|
|
- CustomBanner(
|
|
|
- this._images, {
|
|
|
- this.height = 200,
|
|
|
- this.onTap,
|
|
|
- this.curve = Curves.linear,
|
|
|
- }) : assert(_images != null);
|
|
|
+ const CustomBanner(
|
|
|
+ this._images, {super.key,
|
|
|
+ this.height = 200,
|
|
|
+ required this.onTap,
|
|
|
+ this.curve = Curves.linear,
|
|
|
+ }) : assert(_images != null);
|
|
|
|
|
|
@override
|
|
|
_CustomBannerState createState() => _CustomBannerState();
|
|
|
}
|
|
|
|
|
|
class _CustomBannerState extends State<CustomBanner> {
|
|
|
- PageController _pageController;
|
|
|
- int _curIndex;
|
|
|
- Timer _timer;
|
|
|
+ late PageController _pageController;
|
|
|
+ late int _curIndex;
|
|
|
+ late Timer _timer;
|
|
|
|
|
|
@override
|
|
|
void initState() {
|
|
@@ -68,7 +68,7 @@ class _CustomBannerState extends State<CustomBanner> {
|
|
|
|
|
|
Widget _buildPageView() {
|
|
|
var length = widget._images.length;
|
|
|
- return Container(
|
|
|
+ return SizedBox(
|
|
|
height: widget.height,
|
|
|
child: PageView.builder(
|
|
|
controller: _pageController,
|
|
@@ -87,7 +87,7 @@ class _CustomBannerState extends State<CustomBanner> {
|
|
|
_cancelTimer();
|
|
|
},
|
|
|
onTap: () {
|
|
|
- Scaffold.of(context).showSnackBar(
|
|
|
+ ScaffoldMessenger.of(context).showSnackBar(
|
|
|
SnackBar(
|
|
|
content: Text('当前 page 为 ${index % length}'),
|
|
|
duration: Duration(milliseconds: 500),
|
|
@@ -108,15 +108,13 @@ class _CustomBannerState extends State<CustomBanner> {
|
|
|
_cancelTimer() {
|
|
|
if (_timer != null) {
|
|
|
_timer.cancel();
|
|
|
- _timer = null;
|
|
|
_initTimer();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// 初始化定时任务
|
|
|
_initTimer() {
|
|
|
- if (_timer == null) {
|
|
|
- _timer = Timer.periodic(Duration(seconds: 3), (t) {
|
|
|
+ _timer ??= Timer.periodic(Duration(seconds: 3), (t) {
|
|
|
_curIndex++;
|
|
|
_pageController.animateToPage(
|
|
|
_curIndex,
|
|
@@ -124,7 +122,6 @@ class _CustomBannerState extends State<CustomBanner> {
|
|
|
curve: Curves.linear,
|
|
|
);
|
|
|
});
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
/// 切换页面,并刷新小圆点
|