问题描述
我需要知道是否可以像线性进度指示器的值那样更新其内容,是否有可能,我搜索了此问题,但没有找到满意的答案。
else {
setState(() {
percentage = (event.snapshot.bytesTransferred /
event.snapshot.totalByteCount);
});
print(percentage);
}
});
return showDialog(
context: context,builder: (BuildContext context) {
return AlertDialog(
title: Text('Uploading'),content: Column(
children: [
Center(
child: Text('Uploading .... Please Be Patient'),),SizedBox(
height: height * 0.02,LinearProgressIndicator(
value: percentage != null ? percentage : 0.0,)
],);
},barrierdismissible: false,);
解决方法
如果我没记错的话,可以使用StatefulBuilder
小部件并使用setmodalState而不是setState,我将其与模态底部工作表一起使用
这是StatefulBuilder
的有效代码:
class MyHomePage extends StatefulWidget {
MyHomePage({Key key,this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int number = 0;
StateSetter _setModalState;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),),body: Material(
child: Center(
child: FlatButton(
color: Colors.green,child: Padding(
padding: EdgeInsets.all(12),child: Text('press me'),onPressed: () {
showDialog(
context: context,builder: (BuildContext context) {
return StatefulBuilder(builder:
(BuildContext context,StateSetter setModalState) {
this._setModalState = setModalState;
return AlertDialog(
content: Wrap(
children: [
Column(
children: [
Center(
child: Text(number.toString()),SizedBox(
height: 100,FlatButton(
color: Colors.red,onPressed: () {
_setModalState(() {
number++;
});
},child: (Text("++")),)
],],);
});
},barrierDismissible: false,);
},));
}
}