我创建通用警报框并传递参数。但是当尝试tp传递onPressed方法时,就会出现此错误。
引发了另一个异常:类型'bool'不是类型的子类型 '()=>无效'
窗口小部件类
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),
))],);}}
答案 0 :(得分:1)
将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());