Flutter使用小技巧(持续更新)
2024-02-13 12:12:06
16进制颜色转换
在Flutter中,可以使用Color类来表示颜色。Color类提供了一个静态方法fromRGBO(),可以根据指定的红、绿、蓝、透明度值创建一个Color对象。如果想要将16进制颜色字符串转换为Color对象,可以使用Color.fromHex()方法。例如:
Color color = Color.fromHex("#FF0000");
这样就可以将16进制颜色字符串"#FF0000"转换为Color对象。
final、const的区别
在Flutter中,final和const都是用于声明常量的。但是,这两个关键字有一些区别。final声明的常量可以在运行时修改,而const声明的常量则不能修改。例如:
final int number = 10;
const int number = 10;
number = 20; // 报错:final声明的常量不能修改
Text/RichText行间距
在Flutter中,可以使用Text和RichText控件来显示文本。Text控件只能显示纯文本,而RichText控件可以显示富文本,即可以包含多种不同的文本样式。在Text和RichText控件中,可以使用StrutStyle类来设置行间距。例如:
Text(
'Hello world!',
style: TextStyle(
height: 1.2,
),
);
这样就可以将Text控件的行间距设置为1.2倍。
TextSpan点击事件
在RichText控件中,可以使用TextSpan控件来指定文本的样式和点击事件。例如:
RichText(
text: TextSpan(
text: 'Hello world!',
style: TextStyle(
color: Colors.blue,
),
recognizer: TapGestureRecognizer()
..onTap = () {
print('Hello world!');
},
),
);
这样就可以使RichText控件中的文本具有点击事件。当用户点击文本时,就会执行onTap方法。
Dart构造参数不允许开头使用 ..联级表示法
在Dart中,构造参数不允许开头使用..联级表示法。例如:
class Person {
String name;
int age;
Person(this.name, this.age);
}
Person person = Person()
..name = 'John'
..age = 20;
这样是不允许的。但是,可以在构造函数中使用..联级表示法。例如:
class Person {
String name;
int age;
Person(this.name, this.age);
Person.fromJson(Map<String, dynamic> json)
: name = json['name'],
age = json['age'];
}
Person person = Person.fromJson({
'name': 'John',
'age': 20,
});
这样是可以的。
空安全运算符
在Dart中,可以使用空安全运算符(?)来检查变量是否为null。例如:
String? name;
if (name != null) {
print(name);
}
这样就可以避免在使用name变量之前检查它是否为null。
以上就是在Flutter开发中经常会用到的知识点,希望对你有所帮助。