微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从模型实例具有来自 api 的值传递数据并将其提供给 Text() 小部件

如何解决如何从模型实例具有来自 api 的值传递数据并将其提供给 Text() 小部件

如何从 Model 实例(它具有来自 api 的值)传递数据并将其提供给 Text() 小部件? 但请没有带有列表视图的示例。我只需要为 Text 小部件提供值。

在第一个块中,我的天气实例有一个值,但我不知道如何将此值提供给我的 Text 小部件。如果你能帮助我,我将不胜感激

home.dart 文件

import 'package:Flutter/material.dart';
import 'package:weather_mix_app/models/weather_model.dart';
import 'package:weather_mix_app/services/weather.dart';

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  List<WeatherModel> weather = new List<WeatherModel>();

  @override
  void initState() {
    super.initState();
    setupWeather();
  }

  setupWeather() async {
    Weather weatherInstance = Weather();
    await weatherInstance.fetchData();
    weather = weatherInstance.weather;
  }

  @override
  Widget build(BuildContext context) {
    return Container(child: Text('WHAT I NEED TO WRITE...'));
  }
}

我的weather.dart(从api获取数据)

import 'dart:convert';

import 'package:http/http.dart';
import 'package:weather_mix_app/models/weather_model.dart';

class Weather {
  List<WeatherModel> weather = [];

  Future<void> fetchData() async {
    try {
      Response response = await get(
          'http://api.weatherstack.com/current?access_key=3327f40525a4577b7d0a75aea0c7d44f&query=New%20York');

      Map jsonData = jsonDecode(response.body);

      WeatherModel weatherModel = WeatherModel(
          description: jsonData['current']['weather_descriptions'],temp: jsonData['current']['temperature'],feels_like: jsonData['current']['feelslike'],query: jsonData['request']['query']);
      weather.add(weatherModel);
      print(weather);
    } catch (e) {
      print('caught error! $e');
    }
  }
}

和我的 weather_model.dart

class WeatherModel {
  dynamic description;
  dynamic temp;
  dynamic feels_like;
  dynamic query;

  WeatherModel({this.description,this.temp,this.feels_like,this.query});
}

解决方法

您可以通过执行 List<WeatherModel> weather = [];Weather 中的 home.dart 访问 Weather().weather ,因为它是一个列表,如果您只想显示您的第一个数据可以在Text(Weather().weather[0].temp)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。