我创建通用警报框并传递参数。但是当尝试 tp pass onPressed 方法时,这个错误就来了。
Another exception was thrown: type 'bool' is not a subtype of type '() => void'
小部件类
return showDialogPop(
AppTranslations.of(context).text("login_error"),
AppTranslations.of(context).text("enter_password"),
AppTranslations.of(context).text("ok"),
Navigator.of(context).pop());
showDialogPop 方法
showDialogPop(_titleText, _contentText, _childBtnText, VoidCallback _onPressed) {
return showDialog(
context: context,
builder: (BuildContext context) => AppAlertDialog(
titleText: _titleText,
contentText: _contentText,
childBtnText: _childBtnText,
onPressed: _onPressed));
}
通用AppBar类
import 'package:flutter/material.dart';
class AppAlertDialog extends StatelessWidget {
final VoidCallback onPressed;
final String titleText;
final String contentText;
final String childBtnText;
AppAlertDialog({
this.titleText,
this.contentText,
this.childBtnText,
this.onPressed,
});
@override
Widget build(BuildContext context) {
return AlertDialog(
title: Text(titleText),
content: Text(contentText),
actions: <Widget>[
FlatButton(
onPressed: () => onPressed(),
child: Text(
childBtnText,
style: TextStyle(fontWeight: FontWeight.bold),
))],);}}
最佳答案
将 Navigator.of(context).pop()
更改为 () => Navigator.of(context).pop()
即
showDialogPop(
AppTranslations.of(context).text("login_error"),
AppTranslations.of(context).text("enter_password"),
AppTranslations.of(context).text("ok"),
() => Navigator.of(context).pop());
关于flutter - 参数类型 'bool' 无法分配给参数类型 'voidcallback()',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56880651/