Я недавно работаю над личным проектом с Flutter (который будет запрограммирован на отображение всех валют на экране с их курсами) и хочу получить данные о валютах по URL-ссылке XML и передать их в текстовый виджет в моем применение. Я использую http, xml2 json и конвертирую пакеты из библиотеки Dart. У меня есть два класса для этого проекта:
connection.dart
import 'dart:convert';
import 'package:xml2json/xml2json.dart';
import 'package:http/http.dart' as http;
Xml2Json xml2json = new Xml2Json();
class Connection {
Future fetchData() async {
final response = await http.get('https://www.tcmb.gov.tr/kurlar/today.xml');
if (response.statusCode == 200) {
xml2json.parse(response.body);
var jsondata = xml2json.toGData();
var data = json.decode(jsondata);
var forexSellingUSD = data['Tarih_Date']['Currency'][0]['ForexSelling'];
var uSD = forexSellingUSD;
print(uSD);
return uSD;
}
}
}
main.dart
import 'package:flutter/material.dart';
import 'connection.dart' as conn;
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
conn.Connection connection = new conn.Connection();
@override
Widget build(BuildContext context) {
var xyz = connection.fetchData().toString();
return Scaffold(
appBar: AppBar(
title: Text(''),
),
bottomNavigationBar: Padding(
padding: const EdgeInsets.all(8.0),
child: RaisedButton(
color: Colors.blue,
onPressed: () {
connection.fetchData();
},
child: new Text('Get'),
),
),
body: Center(
child: Text(
xyz,
),
),
);
}
}
Когда я запускаю свое приложение и нажимаю RaisedButton, и консоль отладки выводит это «I / флаттер (7002): {$ t: 6,9255}» Это правильный номер курса валюты, но это значение не может быть выбрано в текстовом виджете, и оно показывает что-то вроде currency_problem_flutter .
Что я должен сделать, чтобы решить эту проблему выборки