首页 > 解决方案 > Flutter CircleAvatar - 使用 Image 对象作为(背景)图像/将其类型转换为 ImageProvider

问题描述

我试图CircleAvatar在我的应用程序主屏幕的顶部显示一个,但我遇到了一个相当愚蠢的问题。我无法弄清楚如何将类的对象Image(即用户的属性)提供为ImageProvider,这是CircleAvatar 预期的。有没有一种简单的方法可以在这里“打字”或人们解决这个问题的其他方式?

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()),
                ) ,
        ),

...

为简化起见,假设 anAppuser仅具有以下属性:

class Appuser{
  String name;
  Image img;  
  Appuser(){
    this.name = "Unknown user";
    this.img = Image.asset('assets/imgs/default1.jpg');        
  }
}

我的想法是我有一个包含在资产中的默认图像,但用户可以用他们自己的图像替换它(似乎是一个相当标准的想法)。我考虑在构造函数中切换到AssetImage img;and ,但这似乎是倒退的。当我在用户信息详细信息页面上显示用户图像(我想只有一个)或当我让用户用相机拍摄新的用户照片时,它也会让我陷入“相反”的问题。出于这些目的,直接使用 class 对象而不是.img = new AssetImage('assets/imgs/default1.jpg');AppuserListTile( title: appuser.img,),ImageAssetImage

还是我以某种方式看错了?

标签: imageflutterdartavatar

解决方案


这个

Image.asset('assets/imgs/default1.jpg').image 

应该管用。

为清楚起见,Image 类具有 ImageProvider 属性。只需使用 .image 和任何给定的 Image 类来获取 ImageProvider。这适用于 Image.asset、.file、.network 和 .memory


推荐阅读