jsonDecode, utf8;
const storage = FlutterSecureStorage();
List<Cards> cardsDetails = [];
class CardListPage extends StatefulWidget {
const CardListPage(this.id, this.name, {Key? key}) : super(key: key);
final int id;
final String name;
@override
State<CardListPage> createState() => _CardListPageState();
}
class _CardListPageState extends State<CardListPage> {
Future<void> fetchCards() async {
//Возвращаю с хранилища jwt в строковую переменную q
String? q = await storage.read(key: "jwt");
//Конвертирую переменную q из String в map
final Map<String, dynamic> data = json.decode(q!);
//Забираю из q токен с ключем "access" и сохраняю в переменную bearer
String bearer = data["access"];
//Создаю переменню response, которой присваивается результат запроса GET
final String urlWithParams =
'https://cp.expcard.ru/cards/list?company[]=' + widget.id.toString();
final response = await http.get(
Uri.parse(urlWithParams),
headers: {"Authorization": 'Bearer $bearer'},
);
var cardsList = jsonDecode(utf8.decode(response.bodyBytes));
setState(() {
for (Map<String, dynamic> user in cardsList) {
cardsDetails.add(Cards.fromJson(user));
}
});
//Делаю проверку статуса полученного ответа
if (response.statusCode == 200) {
} else {
// Если ответ НЕ 200, то выдаём исключение.
throw Exception('Все хуйня! Переделывай!');
}
}
@override
void initState() {
super.initState();
fetchCards();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.name),
centerTitle: true,
backgroundColor: const Color(0xFFf0b03c),
),
body: ListView.builder(
itemCount: cardsDetails.length,
itemBuilder: (context, i) {
return Card(
child: ListTile(title: Text(cardsDetails[i].number)),
margin: const EdgeInsets.all(0.0),
);
},
));
}
}
У тебя cardsDetails глобальная переменная, поэтому у тебя остаются старые данные, перенеси эту переменную в стейт
Блин, точно! Спасибо! От души!
Обсуждают сегодня