У меня есть PageViewBuilder
, который использует Map<String>
из json данных, содержащих строку с именем name
и другую с именем tagname
. Проблема в том, что строка tagname
на самом деле представляет собой список из трех тегов, разделенных запятыми, которые печатаются как «лодка, трава, жабы»; Но я хотел бы разделить эту строку, чтобы я мог сделать каждый элемент интерактивной кнопкой. IE:
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 ?? "";
Но это все равно дало мне ошибку. Так может ли кто-нибудь предложить другой способ выполнить sh то, что мне нужно? Вот полный код:
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'),
)
),
],
);
}
}