我正在这里编写一个 flutter 视频游戏。我尝试在网络上测试它,它工作正常,但在我的物理设备(手机)上执行时,brick.dart 文件遇到错误。
作为初学者,我希望得到你们的帮助:
import 'package:flutter/material.dart';
class MyBrick extends StatelessWidget {
final x;
final y;
MyBrick({this.x, this.y});
@override
Widget build(BuildContext context) {
return Container(
alignment: Alignment(x, y),
child: ClipRRect(
borderRadius: BorderRadius.circular(10),
child: Container(
color: Colors.white,
height: 20,
width: MediaQuery.of(context).size.width / 5,
),
),
);
}
}
flutter
Alignment(double x, double y)
小部件需要双倍。由于您将 x
和 y
传递给您的小部件而不指定它们的类型,因此如果您传递值 x = 1
和 y = 3
此对齐小部件将引发该错误。更新您的代码以包含您的字段类型。这将迫使您传递适当类型的 x
和 y
,否则您将收到 linter 错误:
import 'package:flutter/material.dart';
class MyBrick extends StatelessWidget {
final double x; // type your fields
final double y; // type your fields
MyBrick({this.x, this.y});
@override
Widget build(BuildContext context) {
return Container(
alignment: Alignment(x, y), // accepts only doubles so if you pass an int value, you will get that error
child: ClipRRect(
borderRadius: BorderRadius.circular(10),
child: Container(
color: Colors.white,
height: 20,
width: MediaQuery.of(context).size.width / 5,
),
),
);
}
}
因为 Alignment 小部件需要双精度值,但您传递的是 int 值。
alignment: Alignment(x.toDouble(), y.toDouble()), // convert int to double