flutter社区,flutter平台

android和idea写一个社区服务

IDEA写android服务端,使用IDEA运行Android平台Flutter工程。

创新互联专注骨干网络服务器租用10年,服务更有保障!服务器租用,简阳服务器托管 成都服务器租用,成都服务器托管,骨干网络带宽,享受低延迟,高速访问。灵活、实现低成本的共享或公网数据中心高速带宽的专属高性能服务器。

Android App作为客户端与idea后台服务器通信,操作数据库进行查询,验证,添加数据。具体实例,登录,注册,查询用户,权限分级,提交订单。

小程序有两个页面(index,ding),在第一个页面实现用户的查询,登录,注册功能,登录成功后跳转到订单页面。

补齐短板-开源IM项目OpenIM关于初始化/登录/好友接口文档介绍

OpenIM文档方面的建设一直远远落后于开发, 也经常被开发者诟病,在接下来一周的时间里,我们重点补齐文档,让开发者更轻松接入。由于app sdk底层都是go来实现,所以本文先写一个模板和框架,在接下来的时间里,会有iOS、Android、Flutter、Uniapp、jssdk同事补充具体的细节,并更新到官网

![0](C:\Users\Administrator\Desktop\OpenIM\官网相关\技术文章\6-25\0.png)

## 初始化及登录

初始化并登录成功回调,是正常使用OpenIM 服务的前提

| SDK              | 描述                                                        |

| :--------------- | :----------------------------------------------------------- |

| [Login]          | 登录,如果登录成功,必须退出登录才能再次执行登录操作        |

| [Logout]        | 退出登录                                                    |

| [GetLoginStatus] | 获取登录状态, 101:登录成功,  102:登陆中,  103:登录失败,  201:退出登录 |

| [GetLoginUser]  | 获取当前登录用户UserID,此时用户登录状态未知                |

| [initSDK]        | 初始化 SDK,整个生命周期执行一次,登录相关监听介绍如下:    |

OpenIM和调用方利用监听回调机制,和调用方信息互通,把登录状态通过异步回调方式即时传递给调用方,确保信息及时传达而不阻塞其主线程。

## 监听说明

| 登录相关监听        | 回调描述                                                    |

| :------------------- | :----------------------------------------------------------- |

| [OnConnecting]      | 连接中,在连接后台时(包括重连)回调                        |

| [OnConnectSuccess]  | 连接成功                                                    |

| [OnConnectFailed]    | 连接失败,如果因网络连接失败会重连,其他情况不重连          |

| [OnKickedOffline]    | 被踢下线,可能由于多端登录策略所致,或后台管理员强制其退出登录 |

| [OnUserTokenExpired] | 检测token过期回调                                            |

## 调用流程

OpenIM调用流程分为如下几步:

(1)初始化:在整个生命周期执行一次

(2)设置监听:包括群组监听,好友监听,用户监听,消息及会话监听,这些监听会在其他章节中描述

(3)登录:登录回调成功后再执行其他操作,否则可能出现资源加载未完成的错误

(4)收发消息等操作;

## 好友管理相关接口

OpenIM提供好友关系托管,比如好友申请,同意,以及好友获取等,OpenIM在客户端本地存储好友关系,并结合消息通知机制,按需调用后台接口,确保本地和服务端数据一致。同时利用监听机制,把数据变化通过异步回调传达调用方。OpenIM在收发消息时,默认不检查好友关系,您可以在配置文件中自行修改。OpenIM好友关系是双向关系,A添加B为好友后,则A在B的好友列表中,B也在A的好友列表中,A删除B,仅仅只是删除A的好友列表,而B的好友列表不受影响。同样,黑名单也类似。

| SDK                            | 描述                                                    |

| :----------------------------- | :------------------------------------------------------- |

| [GetDesignatedFriendsInfo]    | 获取指定好友的信息                                      |

| [GetFriendList]                | 获取所有的好友列表                                      |

| [SearchFriends]                | 通过关键词搜索好友                                      |

| [CheckFriend]                  | 检查是否好友关系                                        |

| [AddFriend]                    | 发起添加好友请求                                        |

| [SetFriendRemark]              | 设置好友备注                                            |

| [DeleteFriend]                | 删除好友(单向删除)                                    |

| [GetRecvFriendApplicationList] | 获取我收到的添加好友申请列表                            |

| [GetSendFriendApplicationList] | 获取我发起的的添加好友申请列表                          |

| [AcceptFriendApplication]      | 同意好友申请                                            |

| [RefuseFriendApplication]      | 拒绝好友申请                                            |

| [SetFriendListener]            | 设置好友、黑名单相关监听,用于UI层实时感知数据变化并刷新 |

## 监听说明

好友监听器的作用:调用方设置好友监听,好友关系的变化会通过OpenIM消息机制实时同步到需要感知的在线用户,包括用户的其他端,调用方根据回调事件做相关的数据处理。

比如用户B在Android端添加用户A为好友,用户A(所有在线的终端)收到B的好友申请,则A调用GetRecvFriendApplicationList获取收到的好友申请列表,刷新界面。同时,用户B在线其他的终端比如PC端也会收到通知,B调用GetSendFriendApplicationList获取发起的好友申请列表,刷新B发出的好友申请列表。

当然也可以利用回调的参数信息,做增量处理,而不用获取全量的好友申请列表。

以用户B申请添加用户A为例

| 好友及黑名单监听              | 描述                                                |

| :---------------------------- | :--------------------------------------------------- |

| [OnFriendApplicationAdded]    | 好友申请列表增加,主动发起者和被动添加者会收到      |

| [OnFriendApplicationDeleted]  | 好友申请列表删除,主动删除者会收到                  |

| [OnFriendApplicationAccepted] | 好友申请被同意,主动发起者和被动添加者会收到        |

| [OnFriendApplicationRejected] | 好友申请被拒绝,主动发起者和被动添加者会收到        |

| [OnFriendAdded]              | 好友增加,用户好友增加时会收到                      |

| [OnFriendDeleted]            | 好友删除,用户好友减少时会收到                      |

| [OnFriendInfoChanged]        | 好友信息改变,用户好友信息(比如昵称等)改变时会收到 |

| [OnBlackAdded]                | 黑名单增加,用户黑名单增加时会收到                  |

| [OnBlackDeleted]              | 黑名单移除,用户黑名单减少时会收到                  |

## 项目介绍

OpenIM继续领跑开源IM领域,在广大开发者的支持下,目前github star突破9k。在数据泄露、信息外泄、隐私滥用的时代,IM私有化部署需求旺盛。其中,政企协同办公对IM需求猛增,随着信息化技术的迭代升级以及信创产业加速落地和实践,协同办公软件的发展潜力将进一步被释放。“安全可控“逐步成为第一要素。对于社区交友领域,暴露出的隐私安全问题越来越多,私有化部署确保用户数据不泄露。

OpenIM从服务端到客户端SDK开源即时通讯(IM)整体解决方案,可以轻松替代第三方IM云服务,打造具备聊天、社交、办公功能的app。

github地址:

开发者中心:

## OpenIM团队

创始团队来自资深IM技术团队,我们致力于用开源技术创造服务价值,打造轻量级、高可用的IM架构,开发者只需简单调用 SDK,即可在应用内构建多种即时通讯及实时音视频互动场景。OpenIM优势:开源,安全,可靠,低成本。对于信息安全重视的电子政务,企业协同办公,OpenIM都是非常好的选择。

从公司成立之初就将“开源”作为核心战略来推进,开源充分体现了自由、平等、分享的互联网精神。

OpenIM邀请全球技术极客参与技术优化,让开发者轻松集成,让每一个应用都具备IM功能,同时考虑企业的接入成本、服务器资源以及最重要的数据安全性和私密性。

Flutter开发环境配置(MAC版)

(该路径会有变化,可以关注Flutter社区,随时更新)

Documents为目录,fluttersdk为sdk文件夹

cd 到对应的项目工程中执行命令:

在终端中执行 flutter doctor 查看Android和iOS的开发环境,监测到依赖若有缺失,会给出缺失的依赖的安装结果,依照提示进行安装即可。

在命令终端执行相关命令:

打开Android Studio应用,打开菜单项Preferences Plugins中搜索Flutter插件并点击install进行安装

打开 VS Code,可点击 View - Command Palette,搜索flutter并点击install进行安装

FlutterWeb 和 WebView 原生交互调用

需要创建两个工程,一个是FlutterWeb工程最终打包成Web页面,一个是Flutter原生工程承载一个WebView用来加载Web页面。这样做的好处在于只需要一种语言开发iOS和Android不用对接两次,可以直接使用社区Flutter原生工程的插件,只需要封装给Web调用。

FlutterWeb工程pubspec.yaml添加依赖

Flutter原生工程pubspec.yaml添加依赖

创建一个 toast_channel.dart,定义一个类实现 JavascriptChannel 重写name指定channel名称和onMessageReceived指定调用函数

在WebView的 javascriptChannels 配置上定义的Channel

创建一个 native_channel.dart ,定义一个外部函数通过 @JS("调用的channel和函数名") 注解指定调用的原生函数(JavascriptChannel固定名称为postMessage)

需要使用的地方直接调用

创建一个 js_function.dart,存放被原生调用的函数名称

将要提供给原生调用的函数,通过 js.context[原生调用名称] = 函数 开放给外部调用

如果在FlutterWeb工程要使用这个函数也可以使用@JS注解

WebView 创建时会回调 onWebViewCreated 获得 WebViewController ,WebViewController 调用 runJavascript 会执行JS函数无返回值,调用 runJavascriptReturningResult 会执行JS函数有返回值。

FutureBuilder获取WebViewController, 需要使用的地方直接调用

使用 HTML,CSS,Canvas 和 SVG 元素来渲染。

缺点:会存在不同平台效果不一样。

优点:不加载canvaskit默认使用系统字体,加载过程没有多余开销。

需要用到wasm,WebAssembly 要求需要浏览器支持,WebView Android需要最低需要57,Safari iOS 需要最低需要 11。

缺点:canvaskit 有7m大默认地址在国外首次加载耗时;中文会加载字体库默认地址在国外加载慢。

优点:性能更好,渲染效果一致。

--web-renderer=auto 默认移动端浏览器选择 HTML,桌面端浏览器选择 CanvasKit。

--web-renderer=html 使用 HTML 渲染器

--web-renderer=canvaskit 使用 CanvasKit 渲染器

综上所诉推荐移动端使用HTML渲染更合适,在编译和打包时指定渲染器 --web-renderer=html 。

--debug 模式构建的 Web 应用没有被压缩,且 Tree-shaking 没有执行。

--profile 模式构建的 Web 应用没有被压缩,但 Tree-shaking 执行了。

--release 模式构建的 Web 应用被压缩了,并且 Tree-shaking 执行了

运行命令

flutter run web --dart-define=FLUTTER_WEB_CANVASKIT_URL=./canvaskit/ --web-renderer=html

flutter run web --dart-define=FLUTTER_WEB_CANVASKIT_URL=./canvaskit/ --web-renderer=html --profile

打包命令

flutter build web --dart-define=FLUTTER_WEB_CANVASKIT_URL=./canvaskit/ --web-renderer=html --release

Flutter环境配置备忘(2022)

官方连接:

以上4行作用:

第一行,将flutter的相关命令添加到环境中

第二三行,设置使用flutter社区的仓库,这样在使用flutter get时就不会出错了

第四行,配置flutter的git仓库,用于flutter的版本更新,默认使用github上的仓库速度太慢

将以上4行分别在环境变量中添加即可

注意:推荐使用本例中的社区的源,更新更及时,更全面.以前使用 ,在构建web是出现错误,改成社区源后解决.

错误:


网站题目:flutter社区,flutter平台
文章起源:http://myzitong.com/article/phejoo.html