Flutter CircleAvatar - 使用 Image 对象作为(背景)图像/将其类型转换为 ImageProvider
Flutter CircleAvatar - Using Image object as (background) image / typecasting it to ImageProvider
我试图在我的应用程序主屏幕的顶部显示 CircleAvatar
,但我 运行 遇到了一个相当愚蠢的问题。我无法弄清楚如何将 class Image
(即用户的 属性)的对象提供为 ImageProvider
,这就是 [=12] =] expects。有没有简单的方法 "typecast" 或其他人解决这个问题的方法?
class _HomePageState extends State<PictureShowcaseHome>{
Appuser appuser = new Appuser();
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading: InkWell(
child: CircleAvatar(
backgroundImage: appuser.img,
child: Text(appuser.name.substring(0,1).toUpperCase()),
) ,
),
...
为了简化事情,假设 Appuser
具有以下属性:
class Appuser{
String name;
Image img;
Appuser(){
this.name = "Unknown user";
this.img = Image.asset('assets/imgs/default1.jpg');
}
}
我的想法是我有一个包含在资产中的默认图像,但用户可以用他们自己的图像替换它(似乎是一个相当标准的想法)。我考虑过在 Appuser
的构造函数中切换到 AssetImage img;
和 img = new AssetImage('assets/imgs/default1.jpg');
,但这种做法似乎是倒退的。这也让我陷入 "opposite" 问题,当我在用户信息详细信息页面上显示用户图像时(我想只有 ListTile( title: appuser.img,),
)或者当我让用户拍摄新用户照片时相机。出于这些目的,最简单的方法是直接使用 class Image
的对象,而不是 AssetImage
.
还是我看错了?
这个
Image.asset('assets/imgs/default1.jpg').image
应该可以。
为了清楚起见,Image class 有一个 ImageProvider 属性。只需使用带有任何给定图像 class 的 .image 获取 ImageProvider。这适用于 Image.asset、.file、.network 和 .memory
.image
将为您提供所需的 ImageProvider。
CircleAvatar(
backgroundColor: Colors.red,
radius: radius,
child: CircleAvatar(
radius: radius - 5,
backgroundImage: Image.file(
profileImage,
fit: BoxFit.cover,
).image,
),
)
我试图在我的应用程序主屏幕的顶部显示 CircleAvatar
,但我 运行 遇到了一个相当愚蠢的问题。我无法弄清楚如何将 class Image
(即用户的 属性)的对象提供为 ImageProvider
,这就是 [=12] =] expects。有没有简单的方法 "typecast" 或其他人解决这个问题的方法?
class _HomePageState extends State<PictureShowcaseHome>{
Appuser appuser = new Appuser();
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading: InkWell(
child: CircleAvatar(
backgroundImage: appuser.img,
child: Text(appuser.name.substring(0,1).toUpperCase()),
) ,
),
...
为了简化事情,假设 Appuser
具有以下属性:
class Appuser{
String name;
Image img;
Appuser(){
this.name = "Unknown user";
this.img = Image.asset('assets/imgs/default1.jpg');
}
}
我的想法是我有一个包含在资产中的默认图像,但用户可以用他们自己的图像替换它(似乎是一个相当标准的想法)。我考虑过在 Appuser
的构造函数中切换到 AssetImage img;
和 img = new AssetImage('assets/imgs/default1.jpg');
,但这种做法似乎是倒退的。这也让我陷入 "opposite" 问题,当我在用户信息详细信息页面上显示用户图像时(我想只有 ListTile( title: appuser.img,),
)或者当我让用户拍摄新用户照片时相机。出于这些目的,最简单的方法是直接使用 class Image
的对象,而不是 AssetImage
.
还是我看错了?
这个
Image.asset('assets/imgs/default1.jpg').image
应该可以。
为了清楚起见,Image class 有一个 ImageProvider 属性。只需使用带有任何给定图像 class 的 .image 获取 ImageProvider。这适用于 Image.asset、.file、.network 和 .memory
.image
将为您提供所需的 ImageProvider。
CircleAvatar(
backgroundColor: Colors.red,
radius: radius,
child: CircleAvatar(
radius: radius - 5,
backgroundImage: Image.file(
profileImage,
fit: BoxFit.cover,
).image,
),
)