返回

Flutter使用小技巧(持续更新)

前端

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开发中经常会用到的知识点,希望对你有所帮助。