Commit fcc3a982c1465ab7d5cb1d1133fd0d2799f22d9e
1 parent
e8d9f472
feat:全局缓存bloc
Showing
6 changed files
with
54 additions
and
1 deletions
lib/app/app.dart
@@ -4,6 +4,7 @@ import 'package:flutter_easyloading/flutter_easyloading.dart'; | @@ -4,6 +4,7 @@ import 'package:flutter_easyloading/flutter_easyloading.dart'; | ||
4 | import 'package:flutter_screenutil/flutter_screenutil.dart'; | 4 | import 'package:flutter_screenutil/flutter_screenutil.dart'; |
5 | import 'package:responsive_framework/breakpoint.dart'; | 5 | import 'package:responsive_framework/breakpoint.dart'; |
6 | import 'package:responsive_framework/responsive_breakpoints.dart'; | 6 | import 'package:responsive_framework/responsive_breakpoints.dart'; |
7 | +import 'package:wow_english/common/blocs/cachebloc/cache_bloc.dart'; | ||
7 | import 'package:wow_english/common/widgets/hide_keyboard_widget.dart'; | 8 | import 'package:wow_english/common/widgets/hide_keyboard_widget.dart'; |
8 | import 'package:wow_english/pages/tab/blocs/tab_bloc.dart'; | 9 | import 'package:wow_english/pages/tab/blocs/tab_bloc.dart'; |
9 | import 'package:wow_english/route/route.dart'; | 10 | import 'package:wow_english/route/route.dart'; |
@@ -17,7 +18,8 @@ class App extends StatelessWidget { | @@ -17,7 +18,8 @@ class App extends StatelessWidget { | ||
17 | designSize: const Size(667, 375), | 18 | designSize: const Size(667, 375), |
18 | builder: (_,__) => MultiBlocProvider( | 19 | builder: (_,__) => MultiBlocProvider( |
19 | providers: [ | 20 | providers: [ |
20 | - BlocProvider<TabBloc>(create: (_)=> TabBloc()) | 21 | + BlocProvider<TabBloc>(create: (_)=> TabBloc()), |
22 | + BlocProvider<CacheBloc>(create: (_) => CacheBloc()) | ||
21 | ], | 23 | ], |
22 | child: HideKeyboard( | 24 | child: HideKeyboard( |
23 | child: MaterialApp( | 25 | child: MaterialApp( |
lib/common/blocs/cachebloc/cache_bloc.dart
0 → 100644
1 | +import 'package:flutter/cupertino.dart'; | ||
2 | +import 'package:flutter_bloc/flutter_bloc.dart'; | ||
3 | +import 'package:wow_english/models/user_entity.dart'; | ||
4 | + | ||
5 | +part 'cache_event.dart'; | ||
6 | +part 'cache_state.dart'; | ||
7 | + | ||
8 | +class CacheBloc extends Bloc<CacheEvent, CacheState> { | ||
9 | + UserEntity? _userEntity; | ||
10 | + | ||
11 | + UserEntity? get userEntity => _userEntity; | ||
12 | + | ||
13 | + CacheBloc() : super(CacheInitial()) { | ||
14 | + on<UserInfoChangeEvent>(_userInfoChange); | ||
15 | + } | ||
16 | + | ||
17 | + void _userInfoChange(UserInfoChangeEvent event,Emitter<CacheState> emitter) async { | ||
18 | + _userEntity = event.userEntity; | ||
19 | + emitter(UserInfoChangeState()); | ||
20 | + } | ||
21 | + | ||
22 | + void _userInfoClear(UserInfoClearEvent event,Emitter<CacheState> emitter) async { | ||
23 | + _userEntity = null; | ||
24 | + emitter(UserInfoClearState()); | ||
25 | + } | ||
26 | +} |
lib/common/blocs/cachebloc/cache_event.dart
0 → 100644
lib/common/blocs/cachebloc/cache_state.dart
0 → 100644
lib/pages/login/loginpage/bloc/login_bloc.dart
1 | +import 'dart:js'; | ||
2 | + | ||
1 | import 'package:flutter/cupertino.dart'; | 3 | import 'package:flutter/cupertino.dart'; |
2 | import 'package:flutter_bloc/flutter_bloc.dart'; | 4 | import 'package:flutter_bloc/flutter_bloc.dart'; |
3 | import 'package:flutter_easyloading/flutter_easyloading.dart'; | 5 | import 'package:flutter_easyloading/flutter_easyloading.dart'; |
lib/pages/login/loginpage/login_page.dart
@@ -2,6 +2,7 @@ import 'package:flutter/gestures.dart'; | @@ -2,6 +2,7 @@ import 'package:flutter/gestures.dart'; | ||
2 | import 'package:flutter/material.dart'; | 2 | import 'package:flutter/material.dart'; |
3 | import 'package:flutter_bloc/flutter_bloc.dart'; | 3 | import 'package:flutter_bloc/flutter_bloc.dart'; |
4 | import 'package:flutter_screenutil/flutter_screenutil.dart'; | 4 | import 'package:flutter_screenutil/flutter_screenutil.dart'; |
5 | +import 'package:wow_english/common/blocs/cachebloc/cache_bloc.dart'; | ||
5 | import 'package:wow_english/common/extension/string_extension.dart'; | 6 | import 'package:wow_english/common/extension/string_extension.dart'; |
6 | import 'package:wow_english/common/widgets/textfield_customer_widget.dart'; | 7 | import 'package:wow_english/common/widgets/textfield_customer_widget.dart'; |
7 | import 'package:wow_english/pages/login/loginpage/time_widget.dart'; | 8 | import 'package:wow_english/pages/login/loginpage/time_widget.dart'; |
@@ -29,6 +30,7 @@ class _LoginPageView extends StatelessWidget { | @@ -29,6 +30,7 @@ class _LoginPageView extends StatelessWidget { | ||
29 | if (state is LoginResultChangeState) { | 30 | if (state is LoginResultChangeState) { |
30 | Navigator.of(context).pushNamed(AppRouteName.home); | 31 | Navigator.of(context).pushNamed(AppRouteName.home); |
31 | } | 32 | } |
33 | + context.read<CacheBloc>().add(UserInfoChangeEvent(null)); | ||
32 | }, | 34 | }, |
33 | child: _buildLoginViewWidget(), | 35 | child: _buildLoginViewWidget(), |
34 | ); | 36 | ); |