颤动本地 json 服务



我正在开发一个问答游戏,我需要应用本地json搜索服务,我在应用变量时遇到困难。我已经学习飞镖几个星期了,在屏幕上显示json结果的部分遇到了错误。

我想要一些使用本地 json 的服务示例,或者一些轻量级来继续开发。首先,谢谢。

代码示例:

import 'package:flutter/material.dart';
import 'package:flutter/services.dart' show rootBundle;
import 'dart:async';
import 'dart:convert';
class GameService extends StatefulWidget {
@override
_GameServiceState createState() => _GameServiceState();
}
class _GameServiceState extends State<GameService> {
List perguntas;
List<dynamic> perguntaCurrent;
Future<List> fetchPerguntas() async {
var response = await rootBundle.loadString('assets/api/data.json');
var perguntas = json.decode(response);
return perguntas;
}
void getPergunta() async {
var perguntaCurrent = await fetchPerguntas();
var current = perguntaCurrent[10];
setState(() {
perguntaCurrent = current;
});
}
@override
void initState() {
super.initState();
this.getPergunta();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text(this.perguntaCurrent['pergunta']),
Text(this.perguntaCurrent['versiculo'])
],
),
);
}
}

我在本地使用这个 Json:

[
{
"id":1,
"pergunta":"O que Abel ofereceu a Deus?",
"dificuldade":1,
"respostas":[
"Verduras",
"Leite",
"Frutas",
"Uma ovelha"
],
"certa":4,
"referencia":"Gênesis 4:4",
"versiculo":"Abel, por sua vez, trouxe as partes gordas das primei­ras crias do seu reba­nho. O Senhor aceitou com agrado Abel e sua oferta..."
},
{
"id":2,
"pergunta":"Quantas pessoas entraram na Arca de Noé?",
"dificuldade":1,
"respostas":[
"9 pessoas",
"7 pessoas",
"6 pessoas",
"8 pessoas"
],
"certa":4,
"referencia":"Gênesis 6:10 e 7:7",
"versiculo":"E gerou Noé três filhos: Sem, Cão e Jafé. Noé entrou na arca, e com ele seus filhos, sua mulher e as mulheres de seus filhos, por causa das águas do dilúvio."
},
]

最好的办法是在尝试使用它之前将 JSON 解析为对象。Dart有一个JSON生成器,或者你可以使用这样的在线服务:https://app.quicktype.io/

问题来自以下几行:

Text(this.perguntaCurrent['pergunta']),
Text(this.perguntaCurrent['versiculo'])

或者更具体地说,这些位:

this.perguntaCurrent['pergunta']
this.perguntaCurrent['versiculo']

您正在尝试使用字符串密钥访问perguntaCurrent。但是,您已将perguntaCurrent声明为List<dynamic>,它仅接受int密钥。

(不知道传入JSON的结构,也不知道你想用perguntaCurrent做什么,我没有关于你可以做什么的建议。不过,希望这些信息足以让您找出自己的解决方案。

List<dynamic> perguntaCurrent;更改为Map<String, dynamic> perguntaCurrent;

最新更新