【发布时间】:2021-06-11 12:17:37
【问题描述】:
我在 Flutter 中使用这个包:https://pub.dev/packages/circular_countdown_timer
但是,我需要创建一个单独的小部件来稍微分离我的代码。我创造了这样的东西:
import 'package:circular_countdown_timer/circular_countdown_timer.dart';
import 'package:flutter/material.dart';
class CustomOtpCard extends StatefulWidget {
final String duration;
final String accountName;
final String otp;
final Function(CountDownController) onComplete;
CustomOtpCard({
@required this.duration,
@required this.accountName,
@required this.otp,
@required this.onComplete,
});
@override
_CustomOtpCardState createState() => _CustomOtpCardState();
}
class _CustomOtpCardState extends State<CustomOtpCard> {
CountDownController _controller = CountDownController();
@override
Widget build(BuildContext context) {
return Card(
child: ListTile(
leading: CircularCountDownTimer(
duration: int.parse(widget.duration),
onComplete: widget.onComplete(_controller),
initialDuration: 0,
ringColor: Colors.grey[300],
fillColor: Colors.purple,
backgroundColor: Colors.purple[500],
width: 50.0,
height: 50.0,
),
title: Text(widget.accountName),
subtitle: Text(widget.otp),
),
);
}
}
现在,我是这样使用它的:
return ListView.builder(
itemCount: _totpItems.length,
itemBuilder: (context, index) {
return CustomOtpCard(
duration: '30',
onComplete: (controller) {
BlocProvider.of<TotpGeneratorBloc>(context)
.add(GetTotpItemsEvent());
controller.restart();
},
accountName: _totpItems[index].accountName,
otp: _totpItems[index].otp,
);
},
);
然后错误显示“在 null 上调用了 getter '_controller'。”。这是我的错误的图像:
它说,我传递给回调的 _controller 是空的。我究竟做错了什么?谁能给我一个提示?
谢谢!
【问题讨论】: