字符串可以通过 ${expression} 的方式内嵌表达式。 如果表达式是一个标识符,则 {} 可以省略。
在 Dart 中通过调用就对象的 toString() 方法来得到对象相应的字符串。
var s = 'string interpolation';
assert('Dart has $s, which is very handy.' ==
'Dart has string interpolation, ' +
'which is very handy.');
assert('That deserves all caps. ' +
'${s.toUpperCase()} is very handy!' ==
'That deserves all caps. ' +
'STRING INTERPOLATION is very handy!');
但是如果s是一个类的实例成员变量,则不能省略{},否则在$引用该变量时会出现问题,如:
var user = User(); //这里实例化一个类
Widget _UserInfotmation(){
return Container(
child: Row(
children: [
Column(
children: [
FlatButton(
onPressed: (){
print(user.id); //点击输入000001,正确,user.id是一个类成员
print(user.name);
},
child: Image(
image: AssetImage(user.headImage),
width: 150.0,
height: 150.0,
)
)
],
),
Column(
children: [
Text(
'Name: $user.name' //此处不加花括号,则会显示Instance of User.name,正确的显示应该是000001
),
Text(
'ID: $user.id'
),
],
)
],
),
);
}