如何使用 flutter 访问 JSON 对象?

2024-01-23

如何访问我的 JSON 对象?

Getting Employee Title = null如何直接使用该对象?

像这样获得正确的输出Text('Employee Title = ${list[0].title}')或者直接使用模型对象的任何其他方式?

正确的方法是什么?

import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:flutter/cupertino.dart';


class EmployeeModel {
  int userId;
  int id;
  String title;
  String body;

  EmployeeModel({this.userId, this.id, this.title, this.body});

  EmployeeModel.fromJson(Map<String, dynamic> json) {
    userId = json['userId'];
    id = json['id'];
    title = json['title'];
    body = json['body'];
  }
}
class EmployeePage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return EmployeePageState();
  }
}

class EmployeePageState extends State<EmployeePage> {
  EmployeeModel model = EmployeeModel();
  List<EmployeeModel> list = List();
  var isLoading = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('Employee Title = ${model.title}'),
        ),
        body: isLoading
            ? Center(
          child: CircularProgressIndicator(),
        ):Center(
            child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[

                ])));
  }


  @override
  void initState() {
    super.initState();
    getEmployee(2);
  }

  getEmployee(int id) async {
    setState(() {
      isLoading = true;
    });
    final response =
        await http.get("https://jsonplaceholder.typicode.com/posts?userId=$id");
    if (response.statusCode == 200) {
      list = (json.decode(response.body) as List)
          .map((data) => new EmployeeModel.fromJson(data))
          .toList();
      setState(() {
        isLoading = false;
      });
    }
  }
}

我的代码工作正常,但我想知道这是正确的方法吗? 这边走
Text('Employee Title = ${list[0].title}')或者如果我想直接使用对象有什么方法?

我的代码工作正常,但我想知道这是正确的方法吗? 这边走
Text('员工职称 = ${list[0].title}') 或者如果我想直接使用对象有什么方法?


尝试这个,

import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: EmployeePage(),
    );
  }
}

class EmployeePage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => EmployeePageState();
}

class EmployeePageState extends State<EmployeePage> {
  Future<List<EmployeeModel>> _employeeList;

  @override
  void initState() {
    _employeeList = _getEmployee(2);
    super.initState();
  }

  Future<List<EmployeeModel>> _getEmployee(int id) async {
    final response = await http.get(
      "https://jsonplaceholder.typicode.com/posts?userId=$id",
    );
    if (response.statusCode == 200) {
      final jsonBody = json.decode(response.body) as List;
      return jsonBody.map((data) => new EmployeeModel.fromJson(data)).toList();
    } else
      throw Exception("Unable to get Employee list");
  }

  @override
  Widget build(BuildContext context) {
    return FutureBuilder<List<EmployeeModel>>(
      future: _employeeList,
      builder: (context, snapshot) {
        print(snapshot);
        if (snapshot.hasData)
          return _buildBody(snapshot.data);
        else if (snapshot.hasError)
          return _buildErrorPage(snapshot.error);
        else
          return _buildLoadingPage();
      },
    );
  }

  Widget _buildBody(List<EmployeeModel> employeeList) => Scaffold(
        appBar: AppBar(
          title: Text('Employee Title = ${employeeList[0].title}'),
        ),
        body: ListView.builder(
          itemCount: employeeList.length,
          itemBuilder: (context, index) {
            return ListTile(
              title: Text(employeeList[index].title),
            );
          },
        ),
      );

  Widget _buildErrorPage(error) => Material(
        child: Center(
          child: Text("ERROR: $error"),
        ),
      );

  Widget _buildLoadingPage() => Material(
        child: Center(
          child: CircularProgressIndicator(),
        ),
      );
}

class EmployeeModel {
  int userId;
  int id;
  String title;
  String body;

  EmployeeModel({this.userId, this.id, this.title, this.body});

  EmployeeModel.fromJson(Map<String, dynamic> json) {
    userId = json['userId'];
    id = json['id'];
    title = json['title'];
    body = json['body'];
  }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 flutter 访问 JSON 对象? 的相关文章

  • 如何从画布中删除路径区域(Android)

    我需要裁剪角落ImageView 不要将它们弄圆 而是擦除每个角上的三角形 似乎唯一的方法就是覆盖onDraw方法并使用从画布上删除这些区域Path 问题是我没有纯色背景 所以我需要擦除这些区域 但不要用某种颜色填充它们 我为此使用以下代码
  • Dart 中 ~ 是什么意思?

    在 Dart 的一些代码示例中看到了波形符 我见过它在 C 中用作析构函数 可以调用它来删除对象的实例 它在 Dart 中具有相同的功能吗 Java中有等效的符号吗 Dart 不支持析构函数 https www dartlang org g
  • 将 HTML 字符串加载到 UIWebView 中的延迟

    我在导航控制器中有两个视图控制器 第一个视图控制器有一个带有按钮的菜单 按下此按钮将移动到第二个视图控制器并将 html 字符串加载到 UIWebView 中 没有其他东西被加载到 webview 中 只是一个简单的 NSString 其中
  • MutableStateflow 值、更新、发出

    假设我有一个可变状态流 https kotlin github io kotlinx coroutines kotlinx coroutines core kotlinx coroutines flow mutable state flow
  • 未安装的应用程序的URL方案

    简单的问题 我正在开发一个将注册自己的 URL 方案的应用程序 我计划通过人们最喜欢的 QRCode 阅读器使用 QRCode 启动该应用程序 我的问题 如果我的应用程序尚未安装在他们的 iPhone iPad 上 会发生什么 他们会被引导
  • 如何在 Dart 中处理套接字断开连接?

    我在服务器上使用 Dart 1 8 5 我想实现 TCP 套接字服务器 它侦听传入连接 向每个客户端发送一些数据 并在客户端断开连接时停止生成数据 这是示例代码 void main ServerSocket bind InternetAdd
  • 检测设备方向

    我需要检测 Android 设备方向变化 而无需手动处理传感器数据 同时保持活动方向坚持某个方向 onConfigurationChange不会起作用 因为会让我的活动不旋转 通过使用传感器数据来检测方向变化 我认为这是轮子的发明 因为 A
  • Xcode 本地化设置中没有加号或减号按钮

    我需要在两天内翻译 iOS 应用程序 但我的 XCode 版本 4 4 和 4 5 Developer Preview 都没有给我添加其他语言的选项 我只能选择单击 Make localized 但我只能选择英语 选择它后 Xcode 中的
  • 如何防止应用程序被盗(针对Android应用程序)?

    我想知道防止人们窃取我的应用程序的最有效方法是什么 在线下载 apk 的副本而不是购买它 我已经花了一个lot特别是 Droidbox 上的时间 并且不会发布 Sync 直到我可以保证提供专业版本的非法副本的人无法发布 有人实施过这个吗 我
  • Android中如何使用intent加载本地html页面?

    我的 asset 目录中有一个 html 文件 我必须使用 Intent 将其加载为浏览器应用程序 这是我的代码 但它不起作用 startActivity new Intent Intent ACTION VIEW Uri parse fi
  • 本地管理的广播接收器泄漏?

    当应用程序被系统杀死时 本地 即使用 LocalBroadcastManager 管理 BroadcastReceiver 是否有可能泄漏 我需要它的具体用例是我想在活动的 onCreate onDestroy 中注册 注销 Broadca
  • Apple Mach-O 链接器错误 armv7s 和 libGoogleAdMobAds.a

    我刚刚升级了我的应用程序以在新的 iPhone5 模拟器上运行 但是当我尝试为我的 iPhone 4S 设备构建它时 我收到此 Apple Mach O Liner 错误 ld 文件是通用的 3片 但不包含 n armv7s 切片 User
  • 即时将图像添加到 AR 资源以进行图像识别

    ARKit1 5介绍图像识别 在代码中 您必须创建一组参考图像 如下所示 let referenceImages ARReferenceImage referenceImages inGroupNamed AR Resources bund
  • UINavigationController 在后退按钮单击时向下滚动

    我正在开发一个带有多个导航控制器的 iPhone iPad 应用程序 当我在设备处于横向模式时单击视图的后退按钮时 前一个视图会垂直滚动到屏幕中 而不是像往常一样水平滚动 推送动画始终水平工作 正如它应该的那样 是什么导致了这个奇怪的问题
  • android - 如何让按钮每次按下时单击播放声音文件?

    我打开了一个新项目 现在我想做的是 通过按下按钮 我想要播放一个 mp3 文件 而且每次按下按钮时 声音文件都会再次从头开始播放 所以假设 mp3 长 10 秒 我按下按钮 它正在播放 4 秒后我再次按下按钮 声音将再次播放 现在我想知道的
  • Grade Plugin 3-alpha1 输出文件导致错误

    我正在尝试将项目更新到 Android Studio 3 build gradle 文件中不再接受以下代码片段 applicationVariants all variant gt variant outputs each out gt d
  • 测试中 MissingPluginException(在通道 plugins.flutter.io/firebase_core 上找不到方法 Firebase#initializeCore 的实现)

    我们正在使用新版本的 FlutterFire 但是在运行测试时遇到了一些问题 我们设法初始化 Firebase 添加以下内容 setUp async TestWidgetsFlutterBinding ensureInitialized a
  • 如何从另一个活动更新 Recyclerview 数据

    我有两个活动 MainActivity 和 Addlogactivity 我正在更新 Addlogactivity 中的数据 该数据应显示在 mainactivity recyclerview 中 数据未在数据库中更新 MianActivi
  • NSURLConnection 是否自动保留从服务器发送的 cookie?

    我从 ios 登录到我的龙卷风后端并发回 secure cookie 我注意到只要验证我设置的 secure cookie 我还可以请求其他信息 NSURLConnection 会保留 cookie 多久 或者关闭应用程序后 cookie
  • Swift 3 和 Xcode8 - init 的使用不明确

    在我安装 Xcode 8 并将项目转换为 Swift 3 之前 以下行没问题 现在转换后看起来像这样 let valueData Data Data bytes UnsafePointer

随机推荐

  • 如何模拟 IDataReader 来测试将 SqlDataReader 转换为 System.DataView 的方法

    我是最小起订量的新手 我正在努力编写单元测试来测试转换的方法SqlDataAdapter to System DataView 这是我的方法 private DataView ResolveDataReader IDataReader da
  • 在 webdriver 中查找任意两个元素

    在我的应用程序中 当我打开页面 X 时 我希望看到元素 A 或元素 B 它们被放置在 DOM 中的不同位置 并且可以使用它们的 id 找到 例如driver findElement By id idA 我怎样才能让 webdriver 找到
  • 期待异常时避免空的 catch 块

    我正在尝试使用解析日期SimpleDateFormat 由于我的服务采用多种日期格式 我采用了this https stackoverflow com questions 4024544 how to parse dates in mult
  • jQuery:选择不是某个类的后代的所有元素

    div class container div class x div p span text span p div div div div p span class x text span span text span p div div
  • 如何检测Android布局中的方向变化?

    我刚刚实现了方向改变功能 例如当布局从纵向变为横向时 反之亦然 如何检测方向更改事件何时完成 The OrientationEventListener没用 如何获取有关布局方向更改事件的通知 Use the onConfigurationC
  • 不支持的数据类型:GORM 字段上的 &[] 错误,其中自定义 Valuer 返回 nil?

    我试图为 postgres 数据库创建一个 GORM 模型 其中包含一个带有自定义的类型Scanner and Valuer将字符串切片与字符串相互转换 以保存为单个数据库列 如果切片为空或 nil 我希望数据库列也为 nil 而不是空字符
  • Qtwidgets 的问题

    我刚刚学习如何使用 Qtdesigner 和 Pycharm 创建 GUI 所以我构建了一个非常简单的 GUI 有两个底部和一个标签 在 pycharm 中编译 ui 文件并编写以下代码来执行它后 from PySide2 import Q
  • Ruby:我怎样才能复制这个数组?

    跟进我之前的问题 Ruby 如何复制变量而不指向同一个对象 https stackoverflow com questions 1465569 ruby how can i copy a variable without pointing
  • 将写入进度添加到获取作业/等待作业

    我使用下面的代码来显示 PowerShell 作业的结果 超时时间为 120 秒 我想通过合并来增强这段代码Write Progress 基于已完成的工作数量 我尝试使用这个例子 https stackoverflow com questi
  • 如何解决“在我的机器上运行”的情况

    很多时候 当你向开发人员报告错误时 他回来说 它可以在我的系统上运行 尽管它是一个浏览器应用程序 你如何解决这个问题 从培训 流程的角度来看 培训您的团队 让他们知道 可以在我的机器上运行 并不是一种可以逃脱牢狱之灾的回应 Have an
  • 我目前正在使用 HTML5 音频播放器通过 移动 浏览器提供音频流 24 7 广播流 加载到流中并播放效果很好 主要问题是 HTML5
  • 具有部分透明背景的UITabbar

    长期读者 第一次海报 请温柔一点 P 我正在开发一个应用程序 并且有一个 UITabbar 元素的背景图像 该元素在顶部的几个像素是透明的 我进行了广泛的搜索 尝试了许多建议我可以找到的解决方案 将色调 背景颜色设置为clearColor
  • 从图像中提取红色通道

    我有一个图像为 X RGB 我想使用 Imagick 从中获取红色通道的图像 我尝试参考http www imagemagick org Usage quantize http www imagemagick org Usage quant
  • 升级到 macOS Mojave gem 后更新失败

    Building native extensions This could take a while ERROR Error installing libxml ruby ERROR Failed to build gem native e
  • 是否已经存在修改后的命令调用工具 – 根据负载 – 动态调节作业池?

    各位 Unix 哲学家们 我用 Perl 编写了一些工具 其中有一部分可以并行运行 我给他们配备了 j 工作 选项如make http www gnu org software make manual html node Parallel
  • 循环在获取最后一条记录的批处理文件中无法正常工作

    我有一个批处理文件 它从具有多个记录的 csv 文件中获取输入 并不断更新网站中的数据 我的脚本的代码是 if CodeSection Batch then echo off setlocal enabledelayedexpansion
  • DomPDF 的 get_cellmap() 问题

    我正在使用 DomPdf 并尝试将我的文件转换为 pdf 但遇到下面给出的奇怪错误 我用谷歌搜索了很多次并阅读了不同的论坛 但没有得到这个错误的原因 请帮助我 致命错误 未捕获错误 调用成员函数 get cellmap 在空值上 C xam
  • Mongodb dump(过滤文档和字段)

    我想做一个partialMongodb 数据库的转储 partial比如 我需要过滤一些文件还有一些fields 然后 该转储将被导入到另一台服务器上 我无法使用蒙戈转储实用程序 因为它不允许过滤字段 我可以使用蒙戈出口公司实用程序 因为它
  • TFS 2010“主”构建日志在哪里?

    我试图在测试 TFS 2010 版本中找出单元测试的一些问题 整个日志文件报告了从 MSTest 返回的错误 但我能找到的唯一日志文件 正在编译的各个项目的日志文件 表明没有问题 在哪里可以找到用于生成构建报告的 主 日志文件 据我所知 构
  • 如何使用 flutter 访问 JSON 对象?

    如何访问我的 JSON 对象 Getting Employee Title null如何直接使用该对象 像这样获得正确的输出Text Employee Title list 0 title 或者直接使用模型对象的任何其他方式 正确的方法是什