我有:
我的期望:
可以吗?
我在想什么:
最好的方法是什么?我只想实现检查当前版本,我现在不考虑更新或下载最新版本。
我通过websocket解决了这个问题。在服务器端,我创建了具有所需客户端版本的
WebSocketController
。在客户端,我使用了 web_socket_client 并创建了这样的东西:
Future<void> main() async {
final appVersion = await getVersion();
final backoff = LinearBackoff(
initial: const Duration(seconds: 0),
increment: const Duration(seconds: 1),
maximum: const Duration(seconds: 3),
);
final socket = WebSocket(
Uri.parse('ws://api_address/ws'),
backoff: backoff,
);
socket.connection.listen((event) {
if (event is Connected || event is Reconnecting || event is Reconnected) {
runApp(
StreamBuilder(
stream: socket.messages,
builder: (context, snapshot) {
if (snapshot.hasData && snapshot.data != appVersion) {
return RequiredVersionAlert(
appVersion: appVersion, requiredVersion: snapshot.data);
}
return const App();
},
),
);
}
});
}
Future<String> getVersion() async {
PackageInfo packageInfo = await PackageInfo.fromPlatform();
return packageInfo.version;
}
我用过
web_socket_client
,因为有重连机制。有两个流,一个用于连接服务器状态,第二个流用于接收消息。