Flutter更新Dialog彈出框裡面的UI
阿新 • • 發佈:2018-12-20
最近在用Flutter做專案的時候發現一個問題,我在一個彈出框裡面加了一個Slider,但是我拖動的時候Slider沒反應,後來想到可能是因為SetState更新的是當前頁面的UI,而彈出框和當前介面屬於兩個不同的介面,所以使用setstate更新的是底部的介面,後來百度了一下找到了兩種解決方法,這裡記錄一下,給後來人一點幫助
使用StatefulBuilder包裹Dialog,builder裡面有兩個引數,第二個是StateSetter物件,需要更新的時候使用這個物件去更新
return StatefulBuilder(
builder: (context, mSetState) {
return AlertDialog(
title: Text('設定節點數量'),
content: SingleChildScrollView(
child: new Column(
children: <Widget>[
new Container(
child: new Slider(
value: _currentPosition,
label:
"$_currentPosition",
divisions: 20,
min: 0.0,
max: 20.0,
onChanged: (value) {
mSetState(() {
_currentPosition = value
.roundToDouble();
});
},
),
)
],
),
),
actions: <Widget>[
FlatButton(
child: Text('取消'),
onPressed: () {
Navigator.of(context).pop();
},
),
FlatButton(
child: Text('確定'),
onPressed: () {},
),
],
);
},
)