flutter - 如何在 Flutter 中的 Text 小部件中打印 api SocketException 错误
问题描述
我正在处理 api 的错误处理,我希望当互联网不工作时,它会在文本小部件中显示 SocketExpcetion 消息,它在控制台中打印但无法在文本小部件中显示它,这是我的代码
class BooksApi {
static Future<List<Book>> getBooks(String query) async {
try {
final url = Uri.parse(
'https://gist.githubusercontent.com/JohannesMilke/d53fbbe9a1b7e7ca2645db13b995dc6f/raw/eace0e20f86cdde3352b2d92f699b6e9dedd8c70/books.json');
final response = await http.get(url);
if (response.statusCode == 200) {
final List books = json.decode(response.body);
return books.map((json) => Book.fromJson(json)).where((book) {
final titleLower = book.title.toLowerCase();
final authorLower = book.author.toLowerCase();
final searchLower = query.toLowerCase();
return titleLower.contains(searchLower) ||
authorLower.contains(searchLower);
}).toList();
} else {
throw Exception;
}
} on SocketException {
print("No Internet connection ");
}
throw Exception;
}
}
我创建了一个init()
获取 api 数据的方法,并在 initState() 和未来的构建器中调用它
Future init() async {
setState(() {
isLoading = true;
});
final books = await BooksApi.getBooks(query);
setState(() => this.books = books);
setState(() {
isLoading = false;
});
}
@override
void initState() {
super.initState();
// handleInternetConnection();
init();
}
Expanded(
child: FutureBuilder(
future: init(),
builder: (BuildContext context, snapshot) {
return ListView.builder(
itemCount: books.length,
itemBuilder: (context, index) {
if (snapshot.hasError) {
print("not connected run"); //here i'm trying to call it
return Center(
child: Text("No internet connection!"),
);
} else {
final book = books[index];
return Column(
children: [
InkWell(
child:ListTile(
dense: true,
leading: SizedBox(
child: ClipRRect(
borderRadius:
BorderRadius.circular(10.0),
child: Image.network(
book.urlImage,
fit: BoxFit.cover,
),
),
),
请帮助如何做到这一点。
解决方案
推荐阅读
- javascript - 在 JavaScript 中将变量的值作为对象的属性调用
- django - 保持 django-localized-fields 的唯一性
- react-native - 如何截断 React Native Formik 表单字段中的值
- java - 为什么 Raspberry Pi 上的 JavaFX (3D) 不起作用,尽管它应该起作用?
- java - 无法识别 uft 中的 java 对象
- java - Java Swing 重绘延迟
- java - jquery load() 仅在 classlevel @requestMapping("something") 时不起作用
- php - 使用连接类插入数据库命令的问题
- git - 将master重置为HEAD^而不是HEAD并提交,如何恢复?
- c++ - 使用继承属性时,派生类不采用模板基类的数据成员。为什么会这样,如何解决?