Mag*_*o97 3 api android json apk flutter
I\xe2\x80\x99m 尝试创建一个显示来自 API 的一些数据的应用程序。问题是,虽然应用程序在使用模拟器或智能手机的调试模式下运行良好,但没有显示任何错误。如果我构建 APK,该应用程序不会下载数据,或者至少不会显示数据。我该如何解决这个问题?
\n\n更多细节:
\n\nimport \'dart:convert\';\n\nimport \'package:apiitest2/models/Obj.dart\';\nimport \'package:flutter/material.dart\';\nimport \'package:http/http.dart\' as http;\n\n\nclass Home extends StatefulWidget {\n @override\n _HomeState createState() => _HomeState();\n}\n\nclass _HomeState extends State<Home> {\n List<Obj> dataDef = List<Obj>();\n\n void getData() {\n List<Obj> dataDef0 = List<Obj>();\n http.get(Uri.encodeFull("https://jsonplaceholder.typicode.com/posts"),\n headers: {"Accept": "application/json"}).then((resp) {\n List data = json.decode(resp.body);\n for (var item in data) {\n Obj obj = Obj(item["userId"], item["id"], item["title"], item["body"]);\n dataDef0.add(obj);\n }\n setState(() {\n dataDef = dataDef0;\n });\n });//.catchError((onError){});\n }\n\n @override\n void initState() {\n super.initState();\n getData();\n }\n\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n body: CustomScrollView(slivers: <Widget>[\n SliverAppBar(\n backgroundColor: Colors.red,\n floating: false,\n pinned: true,\n expandedHeight: 200.0,\n flexibleSpace: FlexibleSpaceBar(\n centerTitle: true,\n title: Text(\n "Title",\n style: TextStyle(\n color: Colors.black87,\n fontSize: 20.0,\n fontWeight: FontWeight.bold,\n ),\n ),\n background: Container(\n color: Colors.amber,\n )\n ),\n ),\n body()\n ]\n )\n );\n }\n\n Widget body() {\n if (dataDef.isEmpty)\n return SliverToBoxAdapter(\n child: SizedBox(\n height: MediaQuery.of(context).size.height - 200,\n child: Center(\n child: Container(\n height: 70,\n width: 70,\n child: CircularProgressIndicator()\n )\n ),\n )\n );\n else {\n return SliverList(delegate:\n SliverChildBuilderDelegate((BuildContext context, int index) {\n if (index > dataDef.length - 1) return null;\n return Container(\n child: Text(dataDef[index].title),\n height: 50,\n );\n }));\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
您遇到的问题是因为当您处于调试模式时,调试模式具有默认情况下具有互联网权限的Android清单文件,但是主文件夹中还有另一个src您没有给出的清单文件互联网许可。正如 MePo 所说,你应该授予互联网许可
<uses-permission android:name="android.permission.INTERNET"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3006 次 |
| 最近记录: |