Hibok
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

42 line
1.0 KiB

  1. import 'dart:async';
  2. import 'package:chat/data/constants.dart';
  3. import 'package:connectivity/connectivity.dart';
  4. import 'NetUtil.dart';
  5. class NetStateBloc {
  6. Connectivity _connectivity = Connectivity();
  7. ConnectivityResult lastNet;
  8. StreamController<int> _streamController = StreamController<int>.broadcast();
  9. Stream<int> get stream => _streamController.stream;
  10. void start() {
  11. _connectivity.onConnectivityChanged.listen(_updateConnectionStatus);
  12. }
  13. _updateConnectionStatus(ConnectivityResult result) async {
  14. // print('网络状态改变$result');
  15. if (result == ConnectivityResult.none) {
  16. lastNet = result;
  17. _streamController.sink.add(ChatState.connecting.index);
  18. } else {
  19. if (lastNet != result) {
  20. lastNet = result;
  21. if (NetWork().isInit && !NetWork().isConnecting) {
  22. NetWork().reconnect();
  23. }
  24. }
  25. }
  26. }
  27. addState(ChatState state) {
  28. _streamController.sink.add(state.index);
  29. }
  30. void dispose() {
  31. _streamController.close();
  32. }
  33. }