问题描述
如何从 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)