Преобразование Flutter строки в массив

#json #string #flutter

#json #строка #flutter

Вопрос:

Я пытаюсь преобразовать текст длинной строки в массив, в dart есть несколько методов в виде String.split, но это не работает во Flutter, есть ли какое-либо решение, с помощью которого я могу преобразовать строку с пробелами в массив, а затем использовать массив в Listview

Комментарии:

1. split работает во flutter — в конце концов, он использует dart

2. Спасибо, возможно, я забыл добавить пакет преобразования dart в свой код

3. Преобразовать? split() это String метод, какое отношение к нему имеет Convert?

4. О, я вижу это, я думал, это из класса convert : (

Ответ №1:

После использования String.split для создания List (эквивалент массива в Dart), мы имеем List<String> . Если вы хотите использовать List<String> внутри ListView, вам понадобится Widget который отображает текст. Вы можете просто использовать текстовый виджет.

Следующие функции могут помочь вам сделать это:

  1. String.split : Разделить String для создания List
  2. List<String>.map : Сопоставьте String с виджетом
  3. Iterable<Widget>.toList : Преобразовать Map обратно в List

Ниже приведен краткий автономный пример:

Пример кода

 import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  static const String example = 'The quick brown fox jumps over the lazy dog';

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: ListView(
          children: example
              .split(' ')                       // split the text into an array
              .map((String text) => Text(text)) // put the text inside a widget
              .toList(),                        // convert the iterable to a list
        )
      ),
    );
  }
}
  

Комментарии:

1. Спасибо, я постараюсь, чтобы это было немного короче и казалось проще, я написал это немного по-другому

2. статический список<Строка> Калорий=name.split(» «); конечные продукты =List<Строка>.generate(15,(i)=> «${Myarray[i]} ${Калории[i]}»); тело: ListView.builder( количество элементов: продукты. длина, itemBuilder: (контекст, индекс){ возвращает ListTile( заголовок: Текст(‘${foods[index]}’),

3. Возможно, вы захотите добавить код к своему вопросу, чтобы уточнить свою цель и то, что вы пробовали!

4. Хорошо, большое вам спасибо, я не знал о возможности добавления кода в вопрос, потому что я здесь новичок, я постараюсь добавить в будущем

5. Вы могли бы использовать регулярное выражение и allMatches для разделения его на каждые 2 символа. Или простой цикл for. Я бы посоветовал вам поискать в Google / что угодно для какого-либо решения на основе регулярных выражений. Если вы не можете найти что-либо, скажите мне еще раз @JohnSmithly .

Ответ №2:

Для тех, кто хочет преобразовать каждый символ строки в элемент списка, мы можем

  String username = "John Doe";

 List<String> searchKeywords = List<String>.generate(
          username.length,
          (index) => username[index]); // ['J','o','h','n',' ','D','o','e']
  

Кроме того, вы можете удалить пробелы с помощью метода trim()

Ответ №3:

 List<String> list = "Hello Word".split("");
print(list);
//[H,e,l,l,o, ,W,o,r,l,d]


List<String> list = "Hello World".split(" ");
print(list);
//["Hello", "World"]