как сделать выпадение во флаттере, используя split для удаления запятой на значение столбца базы данных sqflite - PullRequest
0 голосов
/ 23 сентября 2019

Я хочу выпадение стадий во флаттере, значения которых поступают из базы данных sqflite.значение образца в формате json имеет формат ниже, и эти значения хранятся локально.есть два раскрывающихся списка enter image description here

, если я выберу конвейер 'учителя', то его идентификатор 54 будет передан будущему строителю раскрывающегося списка этапов, и я хочу выбрать один этап.

         {
            "id": 54,
            "name": "teacher",
            "stages": "{\"advertise\":false,\"interview\":false}",
            "created_at": "2019-08-23 20:11:54",
            "updated_at": "2019-08-23 20:12:48",
            "deleted_at": null
        },

ниже приведен будущий компоновщик для выпадающего списка

                             FutureBuilder(
                              future: pipelineHelper.getPipeStage(pipelineId),
                              builder: (BuildContext context,
                                  AsyncSnapshot<List<Pipeline>>
                                  snapshot) {
                                if (!snapshot.hasData)
                                  return CircularProgressIndicator();
                                return DropdownButton(
                                  items: snapshot.data
                                      .map((stageList) => DropdownMenuItem<Pipeline>(
                                    value: stageList, child: Text(stageList.stages),))
                                      .toList(),
                                  onChanged: (value) {
                                    setState(() {
                                      stageName = value.stages;
                                      debugPrint('stage selected');
                                    });
                                  },
                                  isExpanded: true,
                                  hint: Column(
                                    mainAxisAlignment: MainAxisAlignment.start,
                                    crossAxisAlignment: CrossAxisAlignment.start,
                                    children: <Widget>[
                                      SizedBox(height: 8.0),
                                      Text('Stage',style: _fontSize,),
                                      stageName == null ? Text('') : Text(stageName,style: _blackColor)
                                    ],),
                                );
                              }),

, когда я пытаюсь

 items: snapshot.data.stages.split(',')

я получил ошибку: этапы получения 'не определены для класса'Ошибка списка.Ниже моя вспомогательная функция

Future<List<Pipeline>> getPipeStage(int number) async {
Database db = await this.database;
var orgMapList = await db.rawQuery('SELECT $colStages from $pipeTable WHERE $colId = $number'); // Get 'Map List' from database
int count = orgMapList.length;
 List<Pipeline> pipeList = List<Pipeline>();
// For loop to create a 'Pipeline List' from a 'Map List'
for (int i = 0; i < count; i++) {
  pipeList.add(Pipeline.fromMapObject(orgMapList[i]));
}
return pipeList;

}

...