cupertinoTimepicker 在颤振中没有正确显示
我编写了 cupertinoTimerpicker 代码,但无法正确显示
在我看来,我混合了一些功能,因此无法看到这个cupertinoTimePicker。
我该怎么办?
class CountDownTimer extends StatefulWidget {
@override
_CountDownTimerState createState() => _CountDownTimerState();
}
class _CountDownTimerState extends State<CountDownTimer>
with TickerProviderStateMixin {
AnimationController controller;
Duration initialtimer = new Duration();
int selectitem = 1;
String get timerString {
Duration duration = controller.duration * controller.value;
return '${duration.inMinutes}:${(duration.inSeconds % 60).toString().padLeft(2, '0')}';
}
@override
void initState() {
super.initState();
controller = AnimationController(
vsync: this,
duration: Duration(seconds: 600),
);
}
Widget timePicker() {
return CupertinoTimerPicker(
mode: CupertinoTimerPickerMode.hms,
minuteInterval: 1,
secondInterval: 1,
initialTimerDuration: initialtimer,
onTimerDurationChanged: (Duration changedtimer) {
setState(() {
initialtimer = changedtimer;
time =
(changedtimer.inMinutes % 60).toString() +
' mins ' +
(changedtimer.inSeconds % 60).toString() +
' secs';
});
},
);
}
Future<void> bottomSheet(BuildContext context, Widget child,
{double height}) {
return showModalBottomSheet(
isScrollControlled: false,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(13), topRight: Radius.circular(13))),
backgroundColor: Colors.white,
context: context,
builder: (context) => Container(
height: height ?? MediaQuery.of(context).size.height / 3,
child: child));
}
Widget button(String text, {Function onPressed, Color color}) {
return Container(
width: 200,
height: 50,
margin: EdgeInsets.symmetric(vertical: 5),
color: color ?? Colors.redAccent,
child: MaterialButton(
child: Text(
'$text',
style: TextStyle(color: Colors.white),
),
onPressed: onPressed),
);
}
String time;
@override
Widget build(BuildContext context) {
ThemeData themeData = Theme.of(context);
return Scaffold(
backgroundColor: Colors.white10,
body: AnimatedBuilder(
animation: controller,
builder: (context, child) {
return Stack(
children: <Widget>[
Align(
alignment: Alignment.bottomCenter,
child:
Container(
color: Colors.amber,
height:
controller.value * MediaQuery.of(context).size.height,
),
),
Padding(
padding: EdgeInsets.all(8.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Expanded(
child: Align(
alignment: FractionalOffset.center,
child: AspectRatio(
aspectRatio: 1.0,
child: Stack(
children: <Widget>[
Positioned.fill(
child: CustomPaint(
painter: CustomTimerPainter(
animation: controller,
backgroundColor: Colors.white,
color: themeData.indicatorColor,
)),
),
Align(
alignment: FractionalOffset.center,
child: Column(
mainAxisAlignment:
MainAxisAlignment.spaceEvenly,
crossAxisAlignment:
CrossAxisAlignment.center,
children: <Widget>[
Text(
"Count Down Timer",
style: TextStyle(
fontSize: 20.0,
color: Colors.white),
),
Text(
timerString,
style: TextStyle(
fontSize: 112.0,
color: Colors.white),
),
],
),
),
],
),
),
),
),
AnimatedBuilder(
animation: controller,
builder: (context, child) {
return Column(
children: [
FloatingActionButton.extended(
onPressed: () {
if (controller.isAnimating)
controller.stop();
else {
controller.reverse(
from: controller.value == 0.0
? 1.0
: controller.value);
}
},
icon: Icon(controller.isAnimating
? Icons.pause
: Icons.play_arrow),
label: Text(
controller.isAnimating ? "Pause" : "Play")),
button(
"Cupertino Timer Picker",
color: Colors.green,
onPressed: () {
bottomSheet(context, timePicker());
},
),
time == null ? Container() : Text('$time'),
],
);
}),
],
),
),
],
);
}),
);
}
我指的是这个页面 https://gist.github.com/maheshmnj/f35813e62ae1a24cbd3acc71f797701d