- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我不确定我在这里采用的方法是否正确。我想使用连接包 ( https://pub.dev/packages/connectivity#-readme-tab- ) 收听连接变化。
但我不想监听特定屏幕/小部件上的连接变化。相反,我希望应用程序监听全局连接变化,并在连接恢复在线时同步数据。
我的第一个方法是把
var StreamSubscription subscription = Connectivity().onConnectivityChanged.listen((ConnectivityResult result) {
// Got a new connectivity status! })
在我的主要功能中。但随后我收到一条错误消息,提醒我需要取消已打开的订阅。如果我在我的主要功能中打开流订阅,我该怎么做?或者我应该将订阅监听器放在其他地方吗?
非常感谢您的帮助
最佳答案
main 函数调用了 runApp 来显示您应用的顶级类。创建新的 Flutter 应用程序时 - 它称为 MyApp。我将以它为例。
您可以做的是将 MyApp 更改为 StatefulWidget。在此之后,您可以使用它的 initState 创建一个订阅,该订阅将一直持续到应用关闭。
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:connectivity/connectivity.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
// Define a class variable to hold your subscription
StreamSubscription subscription;
@override
void initState() {
super.initState();
// initialize subscription
subscription = Connectivity().onConnectivityChanged.listen((ConnectivityResult result) {
print('Got a new connectivity status!');
print(result.toString());
});
}
@override
void dispose() {
// cancel your subscription when the class is removed
subscription.cancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
.....
);
}
}
附言。不要忘记始终取消对类 dispose 的任何订阅。
希望这对您有所帮助。
关于flutter - 如何取消在主函数中打开的 StreamSubscription,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56744110/
目前正在学习 Flutter 并在尝试检测我的设备位置时遇到此错误: A value of type 'StreamSubscription' can't be assigned to a varia
这是一个 (简化)场景 情况的: stream.listen((bool result) { if (result) { // should cancel the subscription
我不确定我在这里采用的方法是否正确。我想使用连接包 ( https://pub.dev/packages/connectivity#-readme-tab- ) 收听连接变化。 但我不想监听特定屏幕/
我有以下基本示例,它似乎无法正常工作: pubspec.yaml: firebase_messaging: ^10.0.0 FcmService.dart StreamSubscription fcm
在我的 Flutter 应用中,StreamSubscription 没有暂停或取消。当我调用 cancel() 如果它之前启动时,它将停止。如果我在启动后调用 cancel(),它不会停止。我正在使
简单来说: 我如何检查 StreamSubscription 是否被取消? 没有 _myCustomSub.isCanceled 最佳答案 看来您必须使用以下两种方法之一: onDone method
我在无状态小部件中有此Streamsubscription StreamSubscription subscription = Geolocation.locationUpdates( accura
我遇到了一个问题,即对 cubit 的流订阅不监听 cubit 的发射状态。这是我如何在我的代码中实现它们的示例。 这是我想听的肘 class ButtonPressCubit extends Cub
调用 StreamController.close 是否会自动取消 StreamSubscription 并删除所有引用? 我认为这是有道理的,但我无法在文档中找到它来确定。 我有以下代码: disp
我正在使用带有 Dart 插件的 WenStorm 2018.2.5(已注册)。 在编辑一个简单的代码时,编辑器显示了一条消息: Cancel instances of dart.async.Stre
我是一名优秀的程序员,十分优秀!