Bloc模式用于持久化会话的解决方案
创始人
2024-12-22 22:00:11
0

Bloc模式是一种在Flutter中用于管理状态的框架。持久化会话是一个常见的需求,可以通过Bloc模式来解决。以下是一个简单的示例代码,其中使用了Bloc模式来持久化会话。

  1. 创建一个SessionBloc类

import 'package:bloc/bloc.dart'; import 'package:shared_preferences/shared_preferences.dart';

class SessionBloc extends Bloc { final SharedPreferences prefs;

SessionBloc(this.prefs) : super(InitialSessionState());

@override Stream mapEventToState(SessionEvent event) async* { if (event is LoadSession) { yield* _mapLoadSessionToState(); } else if (event is SaveSession) { yield* _mapSaveSessionToState(event.token); } }

Stream _mapLoadSessionToState() async* { final token = prefs.getString('token'); if (token != null) { yield LoadedSessionState(token); } else { yield InitialSessionState(); } }

Stream _mapSaveSessionToState(String token) async* { await prefs.setString('token', token); yield LoadedSessionState(token); } }

  1. 创建SessionEvent类

abstract class SessionEvent {}

class LoadSession extends SessionEvent {}

class SaveSession extends SessionEvent { final String token;

SaveSession(this.token); }

  1. 创建SessionState类

abstract class SessionState {}

class InitialSessionState extends SessionState {}

class LoadedSessionState extends SessionState { final String token;

LoadedSessionState(this.token); }

  1. 在Widget中使用SessionBloc

class HomePage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Home"), ), body: BlocBuilder( builder: (context, state) { if (state is LoadedSessionState) { return Text("Token: ${state.token}"); } else { return RaisedButton( child: Text("Login"), onPressed: () { Navigator.push( context, MaterialPageRoute(builder: (context) => LoginPage()), ); }, ); } }, ), ); } }

  1. 在LoginPage中保存Session

class LoginPage extends StatelessWidget { final TextEditingController _controller = TextEditingController();

@override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Login"), ), body: Padding( padding: EdgeInsets.all(16), child: Column( crossAxisAlignment:

相关内容

热门资讯

透视app!wepoker免费... 这是一款非常优秀的wepoker免费透视脚本 ia辅助检测软件,能够让你了解到wepoker免费透视...
透视透视!红龙poker有辅助... 【福星临门,好运相随】;透视透视!红龙poker有辅助吗,wepoker网页版透视方法,透牌教程(从...
透视攻略!wepoker辅助器... 1、透视攻略!wepoker辅助器安装包,wepoker透视底牌,软件教程(本然存在有挂);详细教程...
透视玄学!wepoker底牌透... wepoker底牌透视脚本怎样安装赢率提升策略‌;透视玄学!wepoker底牌透视脚本怎样安装,hh...
透视科技!wepoker辅助下... 透视科技!wepoker辅助下载,云扑克有透视吗,揭秘教程(其实真的有挂);大神普及一款德州ai内幕...
透视攻略!wpk辅助器下载,e... 透视攻略!wpk辅助器下载,epoker免费透视脚本,德州教程(原生有挂);wpk辅助器下载软件透明...
透视脚本!wpk透视脚本下载,... 透视脚本!wpk透视脚本下载,hhpoker外挂靠谱吗,德州教程(先前是有挂);人气非常高,ai更新...
透视辅助!wpk辅助器安装,x... 透视辅助!wpk辅助器安装,xpoker辅助器,微扑克教程(从前存在有挂);(需添加指定Q群1067...
透视智能ai!wepoker辅... 透视智能ai!wepoker辅助器下载,wepoker有没有挂,教你攻略(素来真的有挂);wepok...
透视攻略!aapoker脚本怎... 透视攻略!aapoker脚本怎么用,wpk作弊最怕三个东西,玩家教你(一向是有挂),亲,有的,ai轻...