【发布时间】:2021-05-24 20:25:27
【问题描述】:
新手问题。 就性能而言,下面的 class(构建 TextField 的小部件)之间存在很大差异, 还是一个不重建任何东西的 const ?我在 Flutter 中听说一切都是小部件,例如在构建 func vs class 时,总是构建一个类来替换您在代码上构建的任何内容。我想这可能是一样的。
class RoundedBox extends StatelessWidget {
const RoundedBox({
this.text,
this.onChanged,
});
final String text;
final Function onChanged;
@override
Widget build(BuildContext context) {
return TextField(
onChanged: onChanged,
decoration: InputDecoration(
hintText: text,
hintStyle: TextStyle(
color: Colors.grey,
),
contentPadding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0),
border: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(32.0)),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.lightBlueAccent, width: 1.0),
borderRadius: BorderRadius.all(Radius.circular(32.0)),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.lightBlueAccent, width: 2.0),
borderRadius: BorderRadius.all(Radius.circular(32.0)),
),
),
);
}
}
或者只是一个简单的 const var?:
const kTextFieldDecoration = InputDecoration(
hintText: 'Enter a value',
hintStyle: TextStyle(
color: Colors.grey,
),
contentPadding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0),
border: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(32.0)),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.lightBlueAccent, width: 1.0),
borderRadius: BorderRadius.all(Radius.circular(32.0)),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.lightBlueAccent, width: 2.0),
borderRadius: BorderRadius.all(Radius.circular(32.0)),
),
);
【问题讨论】: