我有Courses
和Tasks
。每个Course
都有很多Tasks
。这就是为什么我在应用程序中使用不同的屏幕来显示课程列表,在点击课程后,我导航到下一个屏幕 - 任务列表。这是我onTap
的课程列表方法:
onTap: () {
TasksPageLoadedEvent pageLoadedEvent =
TasksPageLoadedEvent(
courseId: state.courses[index].id,
truckNumber: this.truckNumber,
);
serviceLocator<TaskBloc>().add(pageLoadedEvent);
Routes.sailor(
Routes.taskScreen,
params: {
Routes.courseNumber:
state.courses[index].courseNumber,
Routes.truckNumber: this.truckNumber,
Routes.courseId: state.courses[index].id,
},
);
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个TasksPageLoadedEvent
,将其传递给TaskBloc
并导航到“任务”页面。
这是它TaskBloc
以及它如何处理映射事件 - 状态:
@override
Stream<TaskState> mapEventToState(
TaskEvent event,
) async* {
if (event is TasksLoadingEvent) {
yield TasksLoadingState();
} else if (event is TasksReloadingErrorEvent) {
yield TasksErrorState();
} else if (event is TasksFetchedFailureEvent) { …
Run Code Online (Sandbox Code Playgroud) 我正在颤振中实现Reso Coder 的简洁架构。我按照他的指南将项目划分为层并使用依赖注入。在其中一种情况下,我希望有以下场景:管理员用户登录,在其主屏幕上查看数据,对其进行编辑,然后按一个按钮,将数据保存到本地数据库 (sqflite)。保存数据后,我想显示Snackbar
带有某种文本“已保存设置!”的文本。例如。这是我的代码(部分):
class AdministratorPage extends StatefulWidget {
@override
_AdministratorPageState createState() => _AdministratorPageState();
}
class _AdministratorPageState extends State<AdministratorPage> {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).backgroundColor,
centerTitle: true,
leading: Container(),
title: Text(AppLocalizations.of(context).translate('adminHomeScreen')),
),
body: SingleChildScrollView(
child: buildBody(context),
),
);
}
BlocProvider<SettingsBloc> buildBody(BuildContext context) {
return BlocProvider(
create: (_) => serviceLocator<SettingsBloc>(),
child: BlocListener<SettingsBloc, SettingsState>(
listener: (context, state) {
if (state is SettingsUpdatedState) {
Scaffold.of(context).showSnackBar(
SnackBar(
content: Text(
AppLocalizations.of(context).translate('settingsUpdated')),
backgroundColor: Colors.blue,
),
);
} …
Run Code Online (Sandbox Code Playgroud) 我有一个 flutter 应用程序,我在其中使用了 sqflite 数据库存储。我按照 sqflite 示例中的说明创建了一个数据库 - 我将其getDatabasesPath()
用作应用程序的相对路径,然后var db = await openDatabase(path_to_db_file);
. 一切正常,我可以创建表格,处理数据等等。
卸载应用程序时遇到问题。虽然仍在开发中,但我需要添加更多表、清除数据、更改列名称等。我想在卸载应用程序后删除与其关联的所有文件,并在下次安装(调试会话)时重新开始。这适用于某些设备。在某些情况下,卸载应用程序后会保留一些文件。DB 文件仍然存在。当我安装具有预期数据库更改的新版本时,它们不适用于尚未删除的数据库文件。
我想问一下,是否有一种机制可以明确告诉 android 在卸载该应用程序时删除与该应用程序关联的所有内容?