@@ -15,6 +15,7 @@ import 'package:im_demo/src/mine/about.dart';
15
15
import 'package:im_demo/src/mine/setting/mine_setting.dart' ;
16
16
import 'package:im_demo/src/mine/user_info_page.dart' ;
17
17
import 'package:nim_core_v2/nim_core.dart' ;
18
+ import 'package:nim_chatkit/repo/config_repo.dart' ;
18
19
19
20
class MinePage extends StatefulWidget {
20
21
const MinePage ({Key ? key}) : super (key: key);
@@ -28,7 +29,7 @@ class _MinePageState extends State<MinePage> {
28
29
29
30
IMLoginService _loginService = getIt <IMLoginService >();
30
31
31
- StreamSubscription ? _sub ;
32
+ List < StreamSubscription > _subs = [] ;
32
33
33
34
@override
34
35
void initState () {
@@ -38,12 +39,22 @@ class _MinePageState extends State<MinePage> {
38
39
39
40
_refreshUserInfo ();
40
41
41
- _sub = NimCore .instance.loginService.onDataSync.listen ((event) {
42
- if (event.type == NIMDataSyncType .nimDataSyncMain &&
43
- event.state == NIMDataSyncState .nimDataSyncStateCompleted) {
44
- _refreshUserInfo ();
45
- }
46
- });
42
+ _subs.addAll ([
43
+ NimCore .instance.loginService.onDataSync.listen ((event) {
44
+ if (event.type == NIMDataSyncType .nimDataSyncMain &&
45
+ event.state == NIMDataSyncState .nimDataSyncStateCompleted) {
46
+ _refreshUserInfo ();
47
+ }
48
+ }),
49
+ NimCore .instance.userService.onUserProfileChanged.listen ((event) {
50
+ for (var user in event) {
51
+ if (user.accountId == _userInfo? .accountId) {
52
+ _userInfo = user;
53
+ setState (() {});
54
+ }
55
+ }
56
+ })
57
+ ]);
47
58
}
48
59
49
60
void _refreshUserInfo () {
@@ -56,7 +67,8 @@ class _MinePageState extends State<MinePage> {
56
67
57
68
@override
58
69
void dispose () {
59
- _sub? .cancel ();
70
+ _subs.length > 0 ? _subs.forEach ((element) => element.cancel ()) : null ;
71
+ _subs.clear ();
60
72
super .dispose ();
61
73
}
62
74
@@ -81,9 +93,9 @@ class _MinePageState extends State<MinePage> {
81
93
InkWell (
82
94
onTap: () {
83
95
Navigator .push (
84
- context,
85
- MaterialPageRoute (
86
- builder: (context) => const UserInfoPage ()))
96
+ context,
97
+ MaterialPageRoute (
98
+ builder: (context) => const UserInfoPage ()))
87
99
.then ((value) {
88
100
setState (() {});
89
101
});
0 commit comments