我正在制作一个可重复使用的小部件。首先在函数中完成,然后将其转换为无状态 Widget。它在函数中工作正常,但不知何故在无状态小部件中发出错误。我的代码:
import 'package:flutter/material.dart';
class MyButton extends StatelessWidget {
final double width;
final Icon? icon;
final String text;
final double radius;
final VoidCallback onPressed;
const MyButton(
{Key? key,
required this.width,
this.icon,
this.text = "",
this.radius = 0,
required this.onPressed}) : super(key: key);
@override
Widget build(BuildContext context) {
if (icon != null) {
return Container(
width: width,
child: ElevatedButton.icon(
icon: icon,
label: Text(text),
style: ButtonStyle(
shape: MaterialStateProperty.all(RoundedRectangleBorder(
borderRadius: BorderRadius.circular(radius),
))),
onPressed: onPressed,
),
);
} else {
return Container(
width: width,
child: ElevatedButton(
child: Text(text),
style: ButtonStyle(
shape: MaterialStateProperty.all(RoundedRectangleBorder(
borderRadius: BorderRadius.circular(radius),
))),
onPressed: onPressed),
);
}
}
}
错误在
if (icon != null) {
return Container(
width: width,
child: ElevatedButton.icon(
icon: icon,
<块引用>
参数类型“图标?”不能分配给参数类型“小部件”。打开文档
我已经指定了它不可为空的部分,所以我在这里不知道。当它被声明为一个函数时,它工作得很好。
答案 0 :(得分:1)
你介意试试这个吗
icon: icon!,
用!
把Icon?
改成Icon
,应该可以修复
答案 1 :(得分:-1)
Dart 编译器不能很好地检查最终属性的空值,因此您只需在编写精美的代码段中添加一行:
@echo off
for /f %%a in ('powershell -Command "Get-Date -format yyyy.MM.dd__HH.mm"') do set datetime=%%a
del /s /q "D:\botdeploy\*"
cd /D D:\Source & git checkout PROD & git pull & git tag PROD_deploy_%datetime% & git push --tags
cd /D "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Msbuild" D:\Source\CRM.csproj /t:Restore,Rebuild /p:outdir="D:\botdeploy\\" /p:Configuration=Release & del /q "D:\botdeploy\_PublishedWebsites\CRM\Web.config" & "C:\Program Files\7-Zip\7z" a -t7z C:\Users\Nam\Desktop\deploy_PROD_%datetime%.7z D:\botdeploy\_PublishedWebsites\CRM\*
pause