Я не могу понять, как save
данные http request
преобразовать в Flutter Provider
. Мне нужно использовать эти данные globally
в приложении.
class Home extends StatefulWidget {
static const routeName = 'home-page';
@override
_HomeState createState() => _HomeState();
}
const request = "https://api.exchangeratesapi.io/latest";
Future<Map> getData() async {
http.Response response = await http.get(request);
return await json.decode(response.body);
}
class _HomeState extends State<Home> {
String dropdownValue = 'USD';
@override
Widget build(BuildContext context) {
final currencyProvider = Provider.of<CurrencyProvider>(context);
return FutureBuilder(
future: getData(),
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
case ConnectionState.waiting:
return Scaffold(
backgroundColor: Colors.blue,
);
default:
if (snapshot.hasError) {
return Center(
child: Text(
"Error :(",
style: TextStyle(color: Colors.amber, fontSize: 25.0),
textAlign: TextAlign.center,
));
} else {
currencyProvider.loadData(snapshot);
return Scaffold(
backgroundColor: Colors.blue,
body: Column(
children: <Widget>[
AppBarHome(),
ConvertFrom(),
ConvertTo(),
Spacer(),
CurrencyInput(),
],
),
);
}
}
},
);
}
}
Я получаю следующую ошибку: « setState () или markNeedsBuild (), вызванный во время сборки». I ' Вы уже пробовали WidgetsBinding.instance.addPostFrameCallback((_){});
, и это тоже не сработало. Повторный вызов Future Builder тоже не помог.
PS: Я не против работать с необработанным снимком. Все, что мне действительно нужно, это сообщение об ошибке на go.