首页 > 解决方案 > 不显示价值

问题描述

将 pid 作为参数传递,用于在 URL 中获取用户的特定数据以获取数据但我无法在应用程序中获取数据,但在控制台中,它显示正确我该怎么办?在下面发布两张图片,一张是控制台的输出,另一张是应用程序的输出

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

class userPage extends StatefulWidget {
  int id;
  userPage({this.id});
  @override
  _userPageState createState() => _userPageState();
}

class _userPageState extends State<userPage> {
  String person_full_name;
  String person_gender;
  String person_age;
  String person_phone;
  String person_address;
  String person_pic;

  FetchData() async{
    var response = await http.get("https://dev.uneva.in/task_721/patient.php?id=${widget.id}");
    if(response.statusCode ==200){
      var data = json.decode(response.body);
      print(data['person_full_name']);
      person_full_name = data['person_full_name'];
      person_gender = data['person_gender'];
      person_age = data['person_age'];
      person_phone = data['person_phone'];
      person_address = data['person_address'];
      person_pic = data['person_pic'];
    }
    else{
      print("Something went wrong");
    }
  }

  @override
  void initState(){
    FetchData();
  }

  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('$person_full_name'),
      ),
    );
  }
}

这是我在控制台中得到的结果

这是我在应用程序中得到的,而不是显示名称它显示 null

标签: jsonflutterflutter-layout

解决方案


如果您只是在进入视图后加载数据,那么您需要在设置变量时使用 setState ,以便它反映在您的视图上:

FetchData() async{
  var response = await http.get("https://dev.uneva.in/task_721/patient.php?id=${widget.id}");
  if(response.statusCode ==200){
    var data = json.decode(response.body);
    print(data['person_full_name']);
    setState((){
      person_full_name = data['person_full_name'];
      person_gender = data['person_gender'];
      person_age = data['person_age'];
      person_phone = data['person_phone'];
      person_address = data['person_address'];
      person_pic = data['person_pic'];
    });
  }
  else{
    print("Something went wrong");
  }
}

推荐阅读