![](/img/trans.png)
[英]The argument type 'Future<void> Function(FirebaseUser)' can't be assigned to the parameter type 'void Function(User)'
[英]The argument type 'Future<void> Function()' can't be assigned to the parameter type 'Future<bool> Function()?
兩天前我試圖找到解決這個問題的方法,但我沒有找到任何東西
....
Future<void> onBackPressed() {
return SystemNavigator.pop();
}
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: onBackPressed, // here i get the error
child: Scaffold(
floatingActionButton: FloatingActionButton(
........
.....
iget 錯誤:無法將參數類型“Future<void>Function()”分配給參數類型“Future<bool>Function()?”。
當我更改為 Future < bool > 時出現錯誤:“Future < void >”類型的值無法從方法“onBackPressed”返回,因為它的返回類型為“Future < bool >”。 任何解決方案?
WillPopScope 的onWillPop
配置需要一個返回類型為Future<bool>
的WillPopScope
,根據返回值,pop 將被執行或不執行, 請參見此處:
如果回調返回解析為 false 的 Future,則不會彈出封閉路由。
由於SystemNavigator.pop()
的返回類型為Future<void>
,因此您無法從onBackPressed
function 返回此類型。
你可以這樣做,但我認為它會導致雙重彈出:
Future<bool> onBackPressed() async {
await SystemNavigator.pop();
return Future.value(true);
}
您應該使用onWillPop
方法來決定是否執行由用戶或您的代碼發起的 pop。 一個典型的例子是,如果您不想在 Android 上禁用返回按鈕,這將導致退出您的應用程序。
可能不是最好的方法,你可以嘗試以下
Future<true> onBackPressed() {
systemNavigator.pop();
return true
}
但我會檢查為什么請求 bool,然后提供返回 true 或 false 的邏輯
如果您只想彈出視圖,則讓 WillPopScope 完成這項工作。 以下可能工作正常:
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async => Future.value(true),
child: Scaffold(
floatingActionButton: FloatingActionButton(
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.