【问题标题】:Flutter CircleAvatar - Using Image object as (background) image / typecasting it to ImageProviderFlutter CircleAvatar - 使用 Image 对象作为(背景)图像/将其类型转换为 ImageProvider
【发布时间】:2019-10-16 08:08:57
【问题描述】:

我试图在我的应用程序的主屏幕顶部显示CircleAvatar,但我遇到了一个相当愚蠢的问题。我无法弄清楚如何提供Image 类的对象(这是用户的属性)作为ImageProvider,这就是CircleAvatar expects。是否有一种简单的方法可以在这里“进行类型转换”或者人们已经解决了这个问题?

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');,但这似乎有点倒退。当我在用户信息详细信息页面上显示用户图像时(我想只有一个ListTile( title: appuser.img,),)或者当我让用户用相机拍摄新的用户照片时,它也会让我陷入“相反”的问题。出于这些目的,最简单的方法是直接使用 Image 类的对象,而不是 AssetImage。

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

【问题讨论】:

    标签: image flutter dart avatar


    【解决方案1】:

    这个

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

    应该可以。

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

    【讨论】:

    • 太棒了,感谢您的快速响应。我不知何故在文档中完全找不到这个。
    【解决方案2】:

    .image 将为您提供所需的 ImageProvider。

    CircleAvatar(
            backgroundColor: Colors.red,
            radius: radius,
            child: CircleAvatar(
                radius: radius - 5,
                backgroundImage: Image.file(
                  profileImage,
                  fit: BoxFit.cover,
                ).image,
            ),
    )
    

    【讨论】:

      猜你喜欢
      • 2020-03-11
      • 1970-01-01
      • 2020-04-26
      • 2020-01-13
      • 2018-03-05
      • 2021-08-05
      • 2019-04-26
      • 2020-11-22
      • 2019-03-25
      相关资源
      最近更新 更多