フラッター:ビルドAPK後、APIからのデータは表示されません。

Maguro97 :

私は、APIからのいくつかのデータを示してアプリケーションを作成しようとしています。問題は、アプリケーションはすべてのエラーを表示せず、エミュレータやスマートフォンを使用してデバッグモードでうまく機能している間、ということです。私はAPKを構築する場合アプリケーションは、データをダウンロードしないか、少なくともそれは、それらを表示しません。どのように私はこの問題を解決することができますか?

いくつかの詳細は:

  • 私はAPK、より多くの回を建て
  • 私はまた異なったブランドの3台の異なるスマートフォンで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,
        );
      }));
    }
  }
}
サーガルアチャリヤ:

あなたがデバッグモードになっているとき、デバッグモードは、デフォルトでは、インターネットのアクセス権を持っているAndroidのマニフェストファイルを持っていますが、中にメインフォルダがありますので、あなたが直面している問題src、あなたが与えられていない別のマニフェストファイルが存在しているが、インターネットのアクセス許可。MePoは、あなたがインターネットのアクセス権を与えるべきだと言ったように

<uses-permission android:name="android.permission.INTERNET"/>

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=33502&siteId=1