【发布时间】:2018-09-26 13:58:52
【问题描述】:
我有一个颤振应用,有 2 个页面。第一个页面是一个简单的 InkWell,它将用户发送到第 2 页。当点击第 2 页时,计时器应该每秒递减一次。它不会开始增量,而是冻结。
import 'package:flutter/material.dart';
import 'dart:io';
int _time = 60;
bool _restart = false;
class MainPage extends StatefulWidget {
@override
MainPageState createState() => new MainPageState();
}
class MainPageState extends State<MainPage> {
@override
Widget build(BuildContext context) {
return new Material(
color: Colors.greenAccent,
child: new InkWell(
onTap: () {
setState((){
while ( true ) {
sleep(const Duration(seconds:1));
_time = _time - 1;
}
});
},
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Text(_time.toString(), style: new TextStyle(color:
Colors.white, fontSize: 60.0, fontWeight: FontWeight.bold)),
]
),
),
);
}
}
【问题讨论】:
-
我认为是因为你调用了 setState 并且它里面是无限循环。您可以尝试类似 onTap: () { while ( true ) { setState((){ sleep(const Duration(seconds:1)); _time = _time - 1; }); } }