Flutter / Dart: ¿Cómo procesar los datos de JSON que contiene una lista separada por comas? -- arrays campo con json campo con flutter campo con dart camp Relacionados El problema

Flutter/Dart - How to process Json data which contains a comma separated list?


0
vote

problema

Español

Tengo un PageViewBuilder6 que utiliza un Map<String> de los datos de JSON que contienen una cadena llamada name y otro llamado tagname < / Código>. El problema es que la cadena Ñ0 es en realidad una lista separada por comas de tres etiquetas que se imprimen como "Barco, hierba, sapos"; Pero me gustaría separar esta cadena para que pueda hacer un botón de un elemento. Es decir:

  Ñ111  

Intenté usar la función dividida de DART como esta;

  Ñ2  

Pero esto le da un error si alguno de los tres nombres de etiquetas se anula.

Así que probé esto;

  Ñ3  

Pero esto todavía me dio un error. Entonces, ¿alguien puede sugerir una manera diferente de lograr lo que necesito? Aquí está el código completo;

  Ñ4  
Original en ingles

I've got a PageViewBuilder which uses a Map<String> of json data containing a String called name and another called tagname. The problem is that the tagname string is actually a comma-separated list of three tags which print out as "boat,grass,toads"; But I'd like to separate this String so that I can make each item a clickable button. IE:

FlatButton( onPressed: () => boat(),               text: "boat",              );  FlatButton( onPressed: () => grass(),               text: "grass",              );  FlatButton( onPressed: () => toads(),               text: "toads",              ); 

I tried to using Dart's split function like this;

var splitag = tagname.split(","); var splitag1 = splitag[0]; var splitag2 = splitag[1]; var splitag3 = splitag[2]; 

But this gives an error if any of the three tag names are void.

So I tried this;

String splitagone = splitag1 ?? ""; String splitagtwo = splitag2 ?? ""; String splitagthree = splitag3 ?? ""; 

But this still gave me an error. So can anyone suggest a different way to accomplish what I need? Here's the full code;

  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'),         )         ),       ],     );   } } 
           

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

puedes hacer algo como este ...

  bestellingoverzicht.php1  
 

You can do something like this..

  Widget createViewItem(SpeakContent speakcraft, BuildContext context) {          List<Widget> columnChildren = [];     Text name = Text(speakcraft.name);     columnChildren.add(name);      speakcraft.tagname.split(',').forEach((String tag) {       FlatButton tagButton = FlatButton(         child: Text(tag),         onPressed: (){},       );       columnChildren.add(tagButton);     });      return Column(       children: columnChildren,     );        } 
 
 
     
     
0
 
vote

Puedes probar:

  bestellingoverzicht.php2  
 

You can try:

var response = await http.get(         Uri.encodeFull("...."),         headers: {           ...         }     );  this.setState(() {   testList = json.decode (response.body) as List; **testList[0]; testList[1];** 
 
 

Relacionados problema

1  Obtenga consignos y / o atributos de ClassMirror usando la reflexión en Dart?  ( Obtain getters and or attributes from classmirror using reflection in dart ) 
La versión anterior de Dart fue capaz de obtener conseguidores usando FragmentTransactions3 Como se publica en esta respuesta: https://stackoverflow.co...

0  DART: Cómo despachar correctamente el evento BLOC en otro bloque  ( Dart how to properly dispatch bloc event in another bloc ) 
Necesito acceder a la autenticaciónBLOC en My LoginBloc para que pueda disparar el evento AuthenticationLogin () si el inicio de sesión es exitoso. Lo que hic...

1  Llame a un método de un componente web y responda a los eventos  ( Call a method of a web component and respond to events ) 
Estoy trabajando en un proyecto DART donde he creado un elemento personalizado con el paquete WEB_UI que tiene alguna animación. Lo que esperaba hacer es tene...

0  ¿Cuál es la mejor manera de almacenar los datos codificados JSON en el proyecto DART / Flutter?  ( Whats the best way to store the json encoded data in dart flutter project ) 
Estaba pensando en la gran cantidad de datos que se han pasado por API. Hasta ahora estaba haciendo las cosas como a continuación. El problema que estoy enfre...

6  ¿Cómo registro múltiples manejadores para un httpserver, en Dart?  ( How do i register multiple handlers for a httpserver in dart ) 
(Estoy usando la nueva versión de Lib v2 de DART: IO) Me gustaría registrar múltiples manejadores para un HTTPSERVER, específicamente un WebSocketTransforma...

0  Flutter y proveedor: ¿Cómo hago que mi StreamProvider escuche dos valores diferentes?  ( Flutter provider how do i make my streamprovider listen to two different val ) 
Digamos que tengo el siguiente código. El código a continuación solo escucha un valor: AuthService().user . ¿Cómo hago que mi proveedor escuche otro valor? L...

2  Creando un elemento en un espacio de nombres en dardos  ( Creating an element in a namespace in dart ) 
Estoy tratando de crear un elemento en un espacio de nombres en particular en DART. Es esta la mejor manera de hacerlo: document.$dom_createElementNS(names...

1  DARTH GMAIL API 'SEND' MÉTODO 'DETALLANTE DETALLOTETETEQUESTERROR  ( Dart gmail api send method returning detailedapirequesterror ) 
Estoy reconstruyendo Mi sitio web personal en Flutter y necesita enviar un correo electrónico después de que se llena un formulario fuera Qué: Estoy trata...

2  Angular.dart y el controlador / componente raíz  ( Angular dart and the root controller component ) 
Tengo un programa angular.Dartart y quiero agregar alguna funcionalidad angular al programa principal (fuera de los componentes). He estado leyendo sobre cómo...

1  Ordenar en la lista <Dynamic> obtiene dinámica en lugar de int en el comparador  ( Sort on listdynamic gets dynamic instead of int in comparator ) 
Soy nuevo en revolotear y parece que no puede ordenar la lista Código de imagen: _getConSites(BuildContext context) async { var conSitesRes = awai...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos