Я совершенно новичок в трепыхании. Я получаю этот код ошибки снова и снова, и я не знаю, что я делаю false Я надеюсь, что кто-то может помочь мне с моим самым первым вопросом Я не долго занимаюсь кодированием, например, 2 месяца
Имя файла: Home_screen.dart
import 'dart:async';
import 'dart:convert';
import 'dart:math';
import 'package:http/http.dart' as http;
import 'package:flutter/material.dart';
import 'package:liquid_pull_to_refresh/liquid_pull_to_refresh.dart';
import 'package:mood_calendar/components/box.dart';
import '../list_data/quotes_.dart';
class HomePage extends StatefulWidget {
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
int _selectedIndex = 0;
late final List<Content> _content = [];
Future<void> _handleOnRefresh() async {
fetchJson(Random).then((value) {
setState(() {
_content.addAll(value);
_content.shuffle();
});
});
}
Future<List<Content>> fetchJson(jsondata) async {
var reponse =
await http.get(Uri.parse('https://www.jsonkeeper.com/b/4DEZ'));
//!Api for the json text
late List<Content> ulist = [];
if (reponse.statusCode == 200) {
var urjson = json.decode(reponse.body);
for (var jsondata in urjson) {
ulist.add(Content.fromJson(jsondata));
}
}
return ulist;
}
@override
void initState() {
fetchJson(context).then((value) {
setState(() {
_content.addAll(value);
_content.shuffle();
});
});
super.initState();
}
Widget build(BuildContext context) {
return Scaffold(
body: Padding(
padding: const EdgeInsets.only(top: 8),
child: LiquidPullToRefresh(
backgroundColor:
Colors.deepPurple.shade700.withBlue(255).withOpacity(0.4),
color: Colors.transparent,
height: 150,
onRefresh: _handleOnRefresh,
showChildOpacityTransition: false,
animSpeedFactor: 4,
child: Padding(
padding: EdgeInsets.only(top: 40),
child: SafeArea(
child: ListView.builder(
itemBuilder: ((context, index) {
return (Box(
text: _content[index].quote.toString(),
));
}),
itemCount: 10,
),
)))));
}
}
имя файла в кавычках.dart
import 'dart:convert';
class Content {
Content({
required this.id,
required this.quote,
required this.author,
});
String id;
String quote;
String author;
factory Content.fromJson(Map<String, dynamic> json) => Content(
id: json["id"],
quote: json["quote"],
author: json["author"],
);
Map<String, dynamic> toJson() => {
"id": id,
"quote": quote,
"author": author,
};
}
class EnumValues<T> {
late Map<String, T> map;
late Map<T, String> reverseMap;
Map<T, String> get reverse {
if (reverseMap == null) {
reverseMap = map.map((k, v) => new MapEntry(v, k));
}
return reverseMap;
}
}
я хочу установить количество элементов равным 10, чтобы отображать только 10 цитат, это работает, но теперь у меня есть эта ошибка
Для получения данных потребуется некоторое количество кадров. Вместо того, чтобы предоставлять жестко запрограммированный itemCount: 10
,
предоставлять
ListView.builder(
itemCount: _content.length,
Чтобы получить 10 предметов, используйте _content.length>=10?10:_content.length
.
Также использование FutureBuilder
будет хорошим выбором.
Да, это было раньше, но потом у меня было около 20 000 цитат, потому что я сохранил их все на jsonkepeer.com, но я хочу отображать только 10 каждый раз, когда я обновляю или загружаю
хорошо, дайте _content.length>=10?10:_content.length
это отвечает на ваш вопрос