如何在flutter中创建带有图像参数的自定义对话框



我试图创建一个自定义对话框,在那里我传递标题,文本和图像参数,当我调用对话框时,它不是显示图像,这里是代码

是对话框的代码。

class LoginSucessDailog extends StatefulWidget {
final String title, text;
final Image img;




const LoginSucessDailog({ required this.title, required this.text,required this.img });
@override
_LoginSucessDailogState createState() => _LoginSucessDailogState();
}
class _LoginSucessDailogState extends State<LoginSucessDailog> {
@override
Widget build(BuildContext context) {
return Dialog(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(Constants.padding),
),
elevation: 0,
backgroundColor: Colors.transparent,
child: contentBox(context),
);
}

contentBox(context) {
return Stack(
children: <Widget>[
Container(

child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[

Image.asset(
widget.img.toString(),
width: 100,
),

Text(
widget.title,
style:GoogleFonts.montserrat(fontSize: 22, fontWeight: FontWeight.w600),
),

Padding(
padding: const EdgeInsets.only(left: 20, right: 20),
child: RichText(
textAlign: TextAlign.center,
text: TextSpan(
style: TextStyle(
color: Colors.black,
),
children: <TextSpan>[
TextSpan(
text:widget.text,
style: GoogleFonts.montserrat(fontSize: 16, color: Colors.grey)),

],
),
),
),
SizedBox50(),
okay()
],
),
),
],
);
}
}

这里我像这样命名它

showDialog(
context: context,
builder: (BuildContext context) {
return LoginSucessDailog( text: 'Phone number doesnt exists!',
title: 'Error',
img:Image.asset("assets/img/alert.png"));
});

但是它给了我这个错误


Unable to load asset: Image(image: AssetImage(bundle: null, name: "assets/img/alert.png"), frameBuilder: null, loadingBuilder: null, alignment: Alignment.center, this.excludeFromSemantics: false, filterQuality: low)

widget.img.toString(),如果我没有把它转换成字符串那么它会给我这个错误

The argument type 'Image' can't be assigned to the parameter type 'String'.

请帮忙解决。

我改变了传递的值并调整了构造函数对话框

showDialog(
context: context,
builder: (BuildContext context) {
return LoginSucessDailog( text: 'Phone number doesnt exists!',
title: 'Error',
img:'assets/img/alert.png');
});
class LoginSucessDailog extends StatefulWidget {
final String title, text, img;

const LoginSucessDailog({ required this.title, required this.text,required this.img });
@override
_LoginSucessDailogState createState() => _LoginSucessDailogState();
}
class _LoginSucessDailogState extends State<LoginSucessDailog> {
@override
Widget build(BuildContext context) {
return Dialog(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(Constants.padding),
),
elevation: 0,
backgroundColor: Colors.transparent,
child: contentBox(context),
);
}

contentBox(context) {
return Stack(
children: <Widget>[
Container(

child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[

Image.asset(
widget.img,
width: 100,
),

Text(
widget.title,
style:GoogleFonts.montserrat(fontSize: 22, fontWeight: FontWeight.w600),
),

Padding(
padding: const EdgeInsets.only(left: 20, right: 20),
child: RichText(
textAlign: TextAlign.center,
text: TextSpan(
style: TextStyle(
color: Colors.black,
),
children: <TextSpan>[
TextSpan(
text:widget.text,
style: GoogleFonts.montserrat(fontSize: 16, color: Colors.grey)),

],
),
),
),
SizedBox50(),
okay()
],
),
),
],
);
}
}

相关内容

  • 没有找到相关文章

最新更新