【发布时间】:2020-06-16 23:14:17
【问题描述】:
我正在尝试创建一个显示来自 API 的一些数据的应用。问题是,虽然 App 在使用模拟器或智能手机的调试模式下运行良好,但没有显示任何错误。如果我构建 APK,应用程序不会下载数据,或者至少不会显示它们。我该如何解决这个问题?
更多细节:
- 我多次构建 APK
- 我在三款不同品牌的智能手机上安装了 APK
import 'dart:convert';
import 'package:apiitest2/models/Obj.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
List<Obj> dataDef = List<Obj>();
void getData() {
List<Obj> dataDef0 = List<Obj>();
http.get(Uri.encodeFull("https://jsonplaceholder.typicode.com/posts"),
headers: {"Accept": "application/json"}).then((resp) {
List data = json.decode(resp.body);
for (var item in data) {
Obj obj = Obj(item["userId"], item["id"], item["title"], item["body"]);
dataDef0.add(obj);
}
setState(() {
dataDef = dataDef0;
});
});//.catchError((onError){});
}
@override
void initState() {
super.initState();
getData();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: CustomScrollView(slivers: <Widget>[
SliverAppBar(
backgroundColor: Colors.red,
floating: false,
pinned: true,
expandedHeight: 200.0,
flexibleSpace: FlexibleSpaceBar(
centerTitle: true,
title: Text(
"Title",
style: TextStyle(
color: Colors.black87,
fontSize: 20.0,
fontWeight: FontWeight.bold,
),
),
background: Container(
color: Colors.amber,
)
),
),
body()
]
)
);
}
Widget body() {
if (dataDef.isEmpty)
return SliverToBoxAdapter(
child: SizedBox(
height: MediaQuery.of(context).size.height - 200,
child: Center(
child: Container(
height: 70,
width: 70,
child: CircularProgressIndicator()
)
),
)
);
else {
return SliverList(delegate:
SliverChildBuilderDelegate((BuildContext context, int index) {
if (index > dataDef.length - 1) return null;
return Container(
child: Text(dataDef[index].title),
height: 50,
);
}));
}
}
}
【问题讨论】:
-
如果您拥有所有权限,您是否签入 manifest.xml?
<uses-permission android:name="android.permission.INTERNET"/>
标签: android json api flutter apk