【发布时间】:2020-11-23 12:20:11
【问题描述】:
我有一个PageViewBuilder,它使用一个Map<String> 的json 数据,其中包含一个名为name 的字符串和另一个名为tagname 的字符串。问题是tagname 字符串实际上是一个逗号分隔的三个标签列表,打印输出为“boat,grass,toads”;但我想分开这个字符串,这样我就可以让每个项目成为一个可点击的按钮。即:
FlatButton( onPressed: () => boat(),
text: "boat",
);
FlatButton( onPressed: () => grass(),
text: "grass",
);
FlatButton( onPressed: () => toads(),
text: "toads",
);
我尝试过这样使用 Dart 的拆分功能;
var splitag = tagname.split(",");
var splitag1 = splitag[0];
var splitag2 = splitag[1];
var splitag3 = splitag[2];
但是,如果三个标签名称中的任何一个是无效的,则会出现错误。
所以我尝试了这个;
String splitagone = splitag1 ?? "";
String splitagtwo = splitag2 ?? "";
String splitagthree = splitag3 ?? "";
但这仍然给了我一个错误。那么任何人都可以提出一种不同的方法来完成我需要的东西吗?这是完整的代码;
class SpeakContent {
final String name, tagname;
SpeakContent({
this.name,
this.tagname
});
factory SpeakContent.fromJson(Map<String, dynamic> jsonData) {
return SpeakContent(
name: jsonData['name'],
tagname: jsonData['tagname'],
);
}
}
class StageBuilder extends StatelessWidget {
final List<SpeakContent> speakcrafts;
StageBuilder(this.speakcrafts);
@override
Widget build(context) {
return PageView.builder(
itemCount: speakcrafts.length,
itemBuilder: (context, int currentIndex) {
return createViewItem(speakcrafts[currentIndex], context);
},
);
}
Widget createViewItem(SpeakContent speakcraft, BuildContext context) {
return Column(
children: <Widget>[
Container(
child: Text(
speakcraft.name,
),
),
Container(child:
FlatButton( onPressed: () => boat(),
child: Text('boat'),
),
),
Container(child:
FlatButton( onPressed: () => grass(),
child: Text('grass'),
),
),
Container(child:
FlatButton( onPressed: () => toads(),
child: Text('toads'),
)
),
],
);
}
}
【问题讨论】: