Flutter:创建自定义可重用的窗口小部件图像

时间:2020-04-22 15:24:17

标签: flutter

我尝试创建一个可重用的小部件,但发生了一些错误...

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

class CustomLogo extends StatelessWidget {

  @override
  Widget showLogo(var nameImage, double radiusImage, double LeftPadding) {
    return new Hero(
      tag: 'hero',
      child: Padding(
        padding: EdgeInsets.fromLTRB(LeftPadding, 70.0, 0.0, 0.0),
        child: CircleAvatar(
          backgroundColor: Colors.transparent,
          radius: radiusImage,
          child: Image.asset('assets/' + name),
        ),
      ),
    );
  }
}

我不了解小部件的覆盖和“构造”,如何在小部件中使用var

1 个答案:

答案 0 :(得分:1)

您必须创建一个构造函数以从尝试调用的位置获取值。

您可以通过以下方式创建单独的小部件并传递参数。

此外,这里还剩下一个错误,那就是英雄标签。您正在设置恒定的英雄标记,如果您在屏幕中一次调用此小部件,则很好。如果您两次使用此小部件,则它将无法正常工作,因为两个英雄在一个屏幕上不能具有相同的标签。所以,我也建议你。动态分配标签。

class CustomLogo extends StatelessWidget {
  final nameImage;
  final radiusImage;
  final leftPadding;

  CustomLogo({this.leftPadding, this.nameImage, this.radiusImage});
  @override
  Widget build(BuildContext context) {
    return new Hero(
      tag: 'hero',
      child: Padding(
        padding: EdgeInsets.fromLTRB(leftPadding, 70.0, 0.0, 0.0),
        child: CircleAvatar(
          backgroundColor: Colors.transparent,
          radius: radiusImage,
          child: Image.asset('assets/' + nameImage),
        ),
      ),
    );
  }
}

如何调用或使用此小部件。

CustomLogo(leftPadding: 10,radiusImage: 5,nameImage: "hello",)