Я изучаю разработку приложений на Flutter и не могу заставить свой Slider работать в AlertDialog. Это не изменит его значение.
Я действительно искал проблему и наткнулся на этот пост на StackOverFlow:
Flutter - Почему слайдер не обновляется в AlertDialog?
Я прочитал это и как бы понял это. Принятый ответ говорит, что:
Проблема в том, что диалоги не встроены в метод сборки. Они находятся в другом дереве виджетов. Поэтому, когда создатель диалога обновляется, диалог не будет.
Однако я не могу понять, как именно это должно быть реализовано, поскольку недостаточно справочного кода.
Вот как выглядит моя текущая реализация:
double _fontSize = 1.0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(qt.title),
actions: <Widget>[
IconButton(
icon: Icon(Icons.format_size),
onPressed: () {
getFontSize(context);
},
),
],
),
body: ListView.builder(
padding: EdgeInsets.symmetric(vertical: 15.0),
itemCount: 3,
itemBuilder: (context, index) {
if (index == 0) {
return _getListTile(qt.scripture, qt.reading);
} else if (index == 1) {
return _getListTile('Reflection:', qt.reflection);
} else {
return _getListTile('Prayer:', qt.prayer);
}
})
);
}
void getFontSize(BuildContext context) {
showDialog(context: context,builder: (context){
return AlertDialog(
title: Text("Font Size"),
content: Slider(
value: _fontSize,
min: 0,
max: 100,
divisions: 5,
onChanged: (value){
setState(() {
_fontSize = value;
});
},
),
actions: <Widget>[
RaisedButton(
child: Text("Done"),
onPressed: (){},
)
],
);
});
}
Widget parseLargeText(String text) {...}
Widget _getListTile(String title, String subtitle) {...}
Я понимаю, что мне нужно будет использовать асинхронные, ожидающие и будущие. Но я не могу понять, как именно. Я потратил больше часа на эту проблему и не могу больше. Пожалуйста, прости меня, если этот вопрос глупый и глупый. Но поверь мне, я старался изо всех сил.