flutter中进度条中的线性进度条,实现其3秒走完的功能搞了一段时间,主要是要使用await方法等待一段时间才去改变其参数.web
for(int i = 1; i <= 30; i++) { // ignore: close_sinks await Socket.connect("1.1.1.1", 8888, timeout: new Duration(milliseconds: 100)).catchError( (e) { isShowProgressBar = true; }); String pText = "正在更新$version版本,请等待"; switch(i%4) { case 1: pText = "正在更新$version版本,请等待."; break; case 2: pText = "正在更新$version版本,请等待.."; break; case 3: pText = "正在更新$version版本,请等待..."; break; } setState(() { progressBar = Center( child: Container( margin: const EdgeInsets.fromLTRB(36.0, 0.0, 36.0, 60.0), child: new Column( verticalDirection: VerticalDirection.up, children: <Widget> [ _getNameText(context, pText), new LinearProgressIndicator(value: i/30), ] ), ), ); }); }
其中1.1.1.1是随便填的一个有效的ip,这样就必须等待await的结果才改变,以前一直不能缘由是异步的机制致使逻辑虽然正确可是却不能实现想要的效果。我这使用socket链接设置timeout时间,还能够本身写返回Future的方法去写。异步