我尝试创建一个可重用的小部件,但发生了一些错误...
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
答案 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",)