#flutter #dart #flutter-showmodalbottomsheet
#трепетание #дротик #трепетание-showmodalbottomsheet
Вопрос:
Как следует из названия, у меня есть строковый параметр, и когда я загружаю домашний виджет с отслеживанием состояния, я хотел бы открыть этот нижний лист, если параметр не равен нулю.
Как я понял, я не могу вызвать showModalBottomSheet()
функцию сборки домашнего виджета, потому что она не может начать создавать нижний лист при создании домашнего виджета, итак, есть ли способ вызвать это сразу после создания домашнего виджета?
Ответ №1:
Одним из решений может быть использование функции addPostFrameCallback экземпляра SchedulerBinding. Таким образом, вы могли бы вызвать showModalBottomSheet после создания домашнего виджета.
import 'package:flutter/scheduler.dart';
...
@override
Widget build(BuildContext context) {
SchedulerBinding.instance.addPostFrameCallback((timeStamp) {
showModalBottomSheet<void>(
context: context,
builder: (BuildContext context) {
//Your builder code
},
);
});
//Return widgets tree for Home
}
Комментарии:
1. Спасибо, это именно то, что я искал
Ответ №2:
Вот один из способов:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
showModalBottomSheet(
context: context,
builder: (BuildContext context) {
return Container(
child: Text('heyooo'),
);
}
);
});
return Scaffold(
appBar: AppBar(),
body: Container(),
);
}
}