親にあるアップロードの進行状況を表示するためにボタンが押されたときにダイアログを表示することを呼び出しています。
アップロード機能のパーツ全体で、 setState(() => _progress = _progress + 0.05);
たとえば次のように状態を更新しています。ただし、ダイアログの値も正しく更新されていません。ダイアログが再構築されていないと思います。ダイアログがこの値をリッスンし、更新時に再構築するようにするにはどうすればよいですか?
ダイアログ コード:
Future<void> _showMyDialog() async {
return showDialog<void>(
context: context,
barrierDismissible: true, // user must tap button!
builder: (BuildContext context) {
return AlertDialog(
insetPadding: EdgeInsets.all(10.0),
content: StatefulBuilder(
builder: (BuildContext context, StateSetter setState) {
return Container(
height: MediaQuery.of(context).size.width * 0.3,
width: MediaQuery.of(context).size.width * 0.9,
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Uploading...",
style: TextStyle(
fontWeight: FontWeight.bold, fontSize: 20),
),
SizedBox(height: 30),
ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(10)),
child: LinearProgressIndicator(
minHeight: 15,
value: _progress,
))
])),
);
}));
},
);
トリガー ダイアログ コード:
onPressed: () async {
setState(() => loading = true);
_showMyDialog();
await uploadAudio();
setState(() => loading = false);
},