如何在颤振中创建套接字异常的屏幕?

如何解决如何在颤振中创建套接字异常的屏幕?

在我的 Flutter 项目中,我需要在调用 API 时发生套接字异常时显示一些插图图像。我该怎么做?

提前致谢

解决方法

这取决于您想在小部件树中的哪个位置显示它。一个简单的例子是将一个新屏幕推送到导航堆栈上。您将需要在可能发生异常的函数中使用 BuildContext。

 {
      artist: { mbid: '','#text': 'Tyler,The Creator' },'@attr': { nowplaying: 'true' },mbid: '',album: { mbid: '','#text': 'CALL ME IF YOU GET LOST' },streamable: '0',url: 'https://www.last.fm/music/Tyler,+The+Creator/_/SWEET+%2F+I+THOUGHT+YOU+WANTED+TO+DANCE+(feat.+Brent+Faiyaz+&+Fana+Hues)',name: 'SWEET / I THOUGHT YOU WANTED TO DANCE (feat. Brent Faiyaz & Fana Hues)',image: [
        {
          size: 'small','#text': 'https://lastfm.freetls.fastly.net/i/u/34s/8bed6cc4a2f68d3bb2228fbe6654b887.gif'
        },{
          size: 'medium','#text': 'https://lastfm.freetls.fastly.net/i/u/64s/8bed6cc4a2f68d3bb2228fbe6654b887.gif'
        },{
          size: 'large','#text': 'https://lastfm.freetls.fastly.net/i/u/174s/8bed6cc4a2f68d3bb2228fbe6654b887.gif'
        },{
          size: 'extralarge','#text': 'https://lastfm.freetls.fastly.net/i/u/300x300/8bed6cc4a2f68d3bb2228fbe6654b887.gif'
        }
      ]
    }

另一个示例是根据布尔值将其添加到您的小部件树中。抛出异常时,您将该 bool 设置为 true。

void someMethod(BuildContext context) {
    try {
      //some code that might throw an exception
    } on Exception catch (_) {
      Navigator.pushNamed(context,"Your illustration view");
    }
  }

在您的小部件树中使用它,如下所示:

void someOtherMethod() {
    try {
      //some code that might throw an exception
    } on Exception catch (_) {
      setState(() {
      hasThrownError = true; 
      });
    }
  }
,

这将有助于解决套接字异常和格式异常。

为 httpresponse 创建模型类

class HTTPResponse<T> {
  bool isSuccessful;
  T data;
  String message;
  int responseCode;
  HTTPResponse(this.isSuccessful,this.data,{this.message,this.responseCode});
}

然后像这样在 api 响应中使用这个模型

Future<HTTPResponse<List<Post>>> getPosts(
      {int limit = 20,int page = 1}) async {
    String url =
        'https://jsonplaceholder.typicode.com/posts?_limit=$limit&_page=$page';
    Uri uri = Uri.parse(url);

    try {
      var response = await http.get(uri);
      if (response.statusCode == 200) {
        var body = json.decode(response.body);
        List<Post> postsList = [];
        body.forEach((e) {
          Post post = Post.fromJson(e);
          postsList.add(post);
        });
        return HTTPResponse(
          true,postsList,responseCode: response.statusCode,);
      } else {
        return HTTPResponse(false,null,message: 'Invalid response from server',responseCode: response.statusCode);
      }
    } on SocketException {
      return HTTPResponse(false,[],message: 'Unable to reach the internet');
    } on FormatException {
      return HTTPResponse(false,message: 'Invalid response from server');
    } catch (e) {
      return HTTPResponse(false,message: "Something went wrong please try in a minute or two");
    }
  }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?