我正在嘗試創建一個應用程式。我想在子類(這是一個搜索欄)中提交查詢后更改父類中的屬性(以便它可以顯示可見性項,SlidingUpPanel)。
我嘗試使用回呼函式并遵循如何將回呼傳遞給另一個 StatefulWidget?但是當我在搜索欄中提交查詢時,它似乎沒有任何作用。之前我也試過用 Navigator.push 直接呼叫 SlidingUpPanel,結果只有 SlidingUpPanel 出現黑屏。
父類(Map):
class MapPage extends StatefulWidget {
const MapPage({Key? key}) : super(key: key);
@override
_MapPageState createState() => _MapPageState();
}
class _MapPageState extends State<MapPage> {
bool IsVisible = false;
void callbackFunction() {
setState(() {
IsVisible = true;
});
}
...
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: false,
body: Stack(
children: [
...
Visibility(
visible: IsVisible,
child: SlidingUpPanel()),
SearchPage(callbackFunction),
]),
);
}
}
子類(搜索欄):
class SearchPage extends StatefulWidget {
final Function callback;
SearchPage(this.callback);
@override
_SearchPageState createState() => _SearchPageState();
}
class _SearchPageState extends State<SearchPage> {
...
@override
Widget build(BuildContext context) {
return FloatingSearchBar(
...
onSubmitted: (query) {
// callback here, but doesn't seem to do anything
widget.callback;
controller.close();
},
...
);
}
}
uj5u.com熱心網友回復:
要實際呼叫函式(執行它),您必須使用().
嘗試像這樣呼叫回呼函式:
onSubmitted: (query) {
// use () to actually call the function
widget.callback();
controller.close();
},
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/344859.html
上一篇:Dart什么是用于擴展或實作dart內置型別的具體類,例如Float32List、Int32List、Uint8List等
