簡體   English   中英

如何使用 flutter 中的 getX 從 api 獲取單個數據

[英]How to fetch a single data from api using getX in flutter

我正在開發一個 flutter 項目。

我已經構建了 controller、model 和視圖。

這是我的 controller 代碼

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

class AnswersController extends GetxController {
  var isLoading = false.obs;
  AnswersModel? _answersModel;

  get assets => null;

  fetchData() async {
    try {
      isLoading(true);
      http.Response response =
          await http.get(Uri.tryParse('https://example.com/k=8463')!);

      if (response.statusCode == 200) {
        var result = jsonDecode(response.body);

        _answersModel = AnswersModel.fromJson(result);
      } else {
        print('error fecting answer');
      }
    } catch (e) {
      print('error while getting data is $e');
    } finally {
      isLoading(false);
    }
  }
}

下面是我的 model 代碼( https://www.dripcoding.com/json-to-dart/

class AnswersModel {
  AnswersModel({
    required this.status,
    required this.title,
  });
 String? status;
 String? title;
  
  AnswersModel.fromJson(Map<String, dynamic> json){
    status = json['status'];
    title = json['title'];
  }

  Map<String, dynamic> toJson() {
    final _data = <String, dynamic>{};
    _data['status'] = status;
    _data['title'] = title;
    return _data;
  }
}

然后在我看來,我試圖顯示狀態標題

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../controller/answers_controller.dart';


void main() {
  runApp(GetMaterialApp(home: MyApp()));
}

class MyApp extends StatelessWidget {
  AnswersController answersController = Get.put(AnswersController());
  @override
  Widget build(BuildContext context){

    return Scaffold(body: ListView.builder(
      itemCount: answersController._answersModel?.assets!.lenght ?? 0, 
      itemBuilder: (context, index){

        return ListTile();
      }),);
  }
}

但是我上癮了,請我幫助我了解如何顯示從 api 檢索到的值,而不是作為列表,而是作為單個數據

首先你必須在控制器的吸氣劑中返回你的_answersModel作為

獲取資產 => _answersModel; // ---> 你在這里返回 null

現在您可以使用answersController.assets[index]."value here"中的值,在您的情況下,您可以簡單地獲取數據為

ListTile(
     title: Text(answersController.assets[index].title.toString()),
        );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM