图片一:

页面窗口

图片二:

输入内容,点击右下角发送,在输入框下面显示的是服务器返回的值

图片三:

再次输入内容,点击右下角发送,同样在输入框下面显示的是服务器返回的值

代码+注释:

import 'package:flutter/foundation.dart';
import 'package:web_socket_channel/io.dart';
import 'package:flutter/material.dart';
import 'package:web_socket_channel/web_socket_channel.dart';/**连接到WebSocket服务器。监听来自服务器的消息。将数据发送到服务器。关闭WebSocket连接。*/
void main() => runApp(new MyApp());class MyApp extends StatelessWidget {@overrideWidget build(BuildContext context) {final title = 'WebSocket Demo';return new MaterialApp(title: title,home: new MyHomePage(title: title,/// 连接到WebSocket服务器channel: new IOWebSocketChannel.connect('ws://echo.websocket.org'),),);}
}class MyHomePage extends StatefulWidget {final String title;final WebSocketChannel channel; // Web插口途径MyHomePage({Key key, @required this.title, @required this.channel}): super(key: key);@override_MyHomePageState createState() => new _MyHomePageState();
}class _MyHomePageState extends State<MyHomePage> {TextEditingController _controller = new TextEditingController();@overrideWidget build(BuildContext context) {return new Scaffold(appBar: new AppBar(title: new Text(widget.title),),body: new Padding(padding: const EdgeInsets.all(20.0),child: new Column(crossAxisAlignment: CrossAxisAlignment.start,children: <Widget>[new Form(child: new TextFormField(controller: _controller,decoration: new InputDecoration(labelText: 'Send a message'),),),/// 监听来自服务器的消息/// Widget将连接到一个Stream, 并在每次收到消息时通知Flutter重新构建界面。new StreamBuilder(//该Stream类是dart:async包中的一个基础类。它提供了一种方法来监听来自数据源的异步事件。与Future返回单个异步响应不同,Stream类可以随着时间推移传递很多事件。stream: widget.channel.stream,builder: (context, snapshot) {return new Padding(padding: const EdgeInsets.symmetric(vertical: 24.0),child: new Text(snapshot.hasData ? '${snapshot.data}' : ''),);},)],),),floatingActionButton: new FloatingActionButton(onPressed: _sendMessage,tooltip: 'Send message',child: new Icon(Icons.send),), // This trailing comma makes auto-formatting nicer for build methods.);}///将数据发送到服务器void _sendMessage() {if (_controller.text.isNotEmpty) {    //只要文本框的值不为空///为了将数据发送到服务器,我们会add消息给WebSocketChannel提供的sink。widget.channel.sink.add(_controller.text);}}@overridevoid dispose() {/// 关闭WebSocket连接widget.channel.sink.close();super.dispose();}
}

喜欢记得点个赞哟,我是王睿,很高兴认识大家!

更多原理请参考谷歌官网:使用WebSockets

Flutter学习 — 使用WebSockets相关推荐

  1. Flutter学习指南:文件、存储和网络

    Flutter学习指南 交互.手势和动画 UI布局和控件 熟悉Dart语言 编写第一个应用 开发环境搭建 本篇文章我们先学习 Flutter IO 相关的基础知识,然后在 Flutter学习指南:交互 ...

  2. flutter学习(排雷)一

    flutter官网:https://flutter.dev/docs/get-started/install 终于下定决心开始flutter学习了呢. 首先需要说的是flutter中的配置文件真的很严 ...

  3. flutter scrollview_简单易上手的Flutter学习指南App,2020一起来玩转Flutter吧~

    Flutter是谷歌的移动UI框架,可以快速在iOS.Android.Web和PC上构建高质量的原生用户界面. Flutter可以与现有的代码一起工作.在全世界,Flutter正在被越来越多的开发者和 ...

  4. Flutter学习笔记(10)--容器组件、图片组件

    如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 上一篇Flutter学习笔记(9)--组件Widget我们说到了在Flutter中一个非常重要的理念"一切皆为组件 ...

  5. Flutter学习日记之底部导航栏BottomNavigationBar组件的使用

    本文地址:https://blog.csdn.net/qq_40785165/article/details/116953235,转载需附上此地址 大家好,我是小黑,一个还没秃头的程序员~~~ 空袋子 ...

  6. iOS程序猿的flutter学习之路

    日常学习Flutter开发的积累 推荐一些平时自己学习Flutter开发当中接触到的优秀文章 -------------------------基础知识 ----------------------- ...

  7. Flutter 学习

    Flutter 学习 参照:https://book.flutterchina.club/ 参照:https://flutter.cn/docs/development/platform-integr ...

  8. Flutter学习笔记 —— 完成一个简单的新闻展示页

    Flutter学习笔记 -- 完成一个简单的新闻展示页 前言 思路分析 案例代码 结束语 上图 前言 刚学Flutter不久,今天我们来看看如何使用 Container & ListView实 ...

  9. Flutter学习-多子布局Widget

    Flutter学习-多子布局Widget 1. Flex 2. Row组件 2.1 Row组件介绍 2.2 属性解析 2.2.1 mainAxisSize 2.2.2 mainAxisAlignmen ...

  10. Flutter学习(一)

    目录 Flutter学习(一) Flutter学习(二)-FlutterGo学习 概念 参考:Flutter 开发文档 在 Flutter 中,几乎所有都是 widget,包括对齐 (alignmen ...

最新文章

  1. UVA10296 Jogging Trails(中国邮递员问题)(欧拉回路、一般图最大权匹配 / 状压DP)
  2. Android Hook神器——XPosed入门(登陆劫持演示)
  3. E - Counting Cliques HDU - 5952
  4. String的常用方法(java)
  5. HDU 6113 度度熊的01世界【DFS/Flood Fill】
  6. 最新版spark1.1.0集群安装配置
  7. 实现iOS长时间后台的两种方法:Audiosession和VOIP(转)
  8. 使用windows Builder的一个中文乱码问题解决
  9. VM虚拟机BT5下对usb无线网卡的配置
  10. Token验证失败的解决方法
  11. MES系统供应商评估报告-- Gartner出品
  12. excel函数公式html文档,excel公式embed怎么用
  13. Deep Graph Contrastive Representation Learning
  14. css内容超过宽度显示省略号没效果,文字超过两行折叠省略
  15. Pancake和import 语句——————————方法的重写
  16. php /x20有啥用,什么才是逆光摄影 用了全面屏vivo X20恍然大悟
  17. Maple学习笔记——数学计算与数据处理
  18. Ubuntu synaptic install
  19. 华为android9使用外置存储卡,华为Mate 9支持扩展储存卡吗?支持多大储存卡?
  20. BBC的英语发音技巧教学节目

热门文章

  1. Java集合---ConcurrentHashMap原理分析
  2. HttpClient短信接口
  3. js的concat函数、join 、slice函数及二维数组的定义方式
  4. [AIR] 获取U盘,打开U盘
  5. cello 有关状态
  6. ARP欺骗原理 [转]
  7. Heap与Stack的区别(转载,刚看到的)
  8. 主函数中冒泡法 VS 自定义函数选择法
  9. ACL'22 | 一文解读复旦黄萱菁、邱锡鹏等老师NLP实验室的12篇长文
  10. 【入门】PyTorch文本分类