关闭 ModalBottomSheet 时颤动 return 数据
Flutter return data when ModalBottomSheet is dismissed
当在屏幕上按下 FAB 时,我正在显示 ModelBottomSheet。当 ModelBottomSheet 弹出时,我 运行 一个方法,该方法使用从 ModelBottomSheet 返回的数据更新屏幕。
onPressed: () {
print('FAB Pressed');
showModalBottomSheet<SearchData>(
isScrollControlled: true,
context: context,
builder: (context) => SingleChildScrollView(
child: SearchScreen(
searchData: _searchData,
locationEnabled: !userPosition.error,
),
),
).then((value) => _updateList(value));
},
在 ModelBottomSheet 上,我有一个弹出 ModelBottomSheet 和 returns 数据 (_searchData) 的按钮。
ElevatedButton(
onPressed: () {
print('search button pressed');
if (_textSearch.text == null || _textSearch.text.isEmpty) {
_searchData.searchTerm = '';
} else {
_searchData.searchTerm = 'value=${_textSearch.text}';
}
if (_idSearch.text == null || _idSearch.text.isEmpty) {
_searchData.guideId = '';
} else {
_searchData.guideId = '&location=${_idSearch.text}';
_searchData.showOfficial = false;
}
Navigator.pop(context, _searchData);
},
当 ModelBottomSheet 被关闭(即用户点击屏幕的上半部分)时,如何实现与按下 ModelBottomSheet 上的按钮相同的结果?
您可以使用 WillPopScope 包装您的 ModalWidget。你可以看下面的例子
WillPopScope(
onWillPop: () async {
Navigator.pop(context, data);
return true; // return true if needs to be popped
},
child: ModelWidget(
…
),
);
这将确保在使用后退按钮自动弹出时调用 Navigator.pop。
来源:
当在屏幕上按下 FAB 时,我正在显示 ModelBottomSheet。当 ModelBottomSheet 弹出时,我 运行 一个方法,该方法使用从 ModelBottomSheet 返回的数据更新屏幕。
onPressed: () {
print('FAB Pressed');
showModalBottomSheet<SearchData>(
isScrollControlled: true,
context: context,
builder: (context) => SingleChildScrollView(
child: SearchScreen(
searchData: _searchData,
locationEnabled: !userPosition.error,
),
),
).then((value) => _updateList(value));
},
在 ModelBottomSheet 上,我有一个弹出 ModelBottomSheet 和 returns 数据 (_searchData) 的按钮。
ElevatedButton(
onPressed: () {
print('search button pressed');
if (_textSearch.text == null || _textSearch.text.isEmpty) {
_searchData.searchTerm = '';
} else {
_searchData.searchTerm = 'value=${_textSearch.text}';
}
if (_idSearch.text == null || _idSearch.text.isEmpty) {
_searchData.guideId = '';
} else {
_searchData.guideId = '&location=${_idSearch.text}';
_searchData.showOfficial = false;
}
Navigator.pop(context, _searchData);
},
当 ModelBottomSheet 被关闭(即用户点击屏幕的上半部分)时,如何实现与按下 ModelBottomSheet 上的按钮相同的结果?
您可以使用 WillPopScope 包装您的 ModalWidget。你可以看下面的例子
WillPopScope(
onWillPop: () async {
Navigator.pop(context, data);
return true; // return true if needs to be popped
},
child: ModelWidget(
…
),
);
这将确保在使用后退按钮自动弹出时调用 Navigator.pop。
来源: