More
如何在Flutter中使用CallbackShortcuts和Back4App实现键盘快捷键
23 分
介绍 键盘快捷键通过提供对应用程序中常见操作的快速访问来增强用户体验。在 flutter 中, callbackshortcuts 小部件允许开发人员将键盘按键组合直接映射到回调函数,而无需定义操作或意图。这简化了将键盘快捷键添加到应用程序的过程。 在本教程中,您将学习如何将 callbackshortcuts 集成到 flutter 应用程序中,并使用 back4app——一个由 parse server 提供支持的后端即服务——来存储和检索数据。在本教程结束时,您将拥有一个响应键盘快捷键以执行从 back4app 获取数据等操作的 flutter 应用程序。 先决条件 要完成本教程,您需要: 安装在您机器上的 flutter sdk 。请按照您的操作系统的 官方 flutter 安装指南 https //flutter dev/docs/get started/install 进行操作。 对 flutter 和 dart 的基本知识 。如果您是 flutter 新手,请查看 flutter 文档 https //flutter dev/docs 以熟悉基础知识。 一个 ide 或文本编辑器 ,如 visual studio code 或 android studio。 一个 back4app 账户 。在 back4app https //www back4app com/ 注册一个免费账户。 将 parse server sdk for flutter 添加到您的项目中。通过遵循 back4app flutter sdk 指南 https //www back4app com/docs/flutter/parse flutter sdk 了解如何设置它。 一个物理键盘或模拟器 来测试键盘快捷键。 步骤 1 – 设置 flutter 项目 1 1 创建一个新的 flutter 项目 打开终端并运行 flutter create callback shortcuts app 导航到项目目录 cd callback shortcuts app 1 2 添加依赖 打开 pubspec yaml 并添加以下依赖 dependencies flutter sdk flutter parse server sdk flutter ^4 0 1 运行 flutter pub get 来安装包 步骤 2 – 设置 back4app 2 1 创建一个新的 back4app 应用 登录到您的 back4app 控制面板 https //dashboard back4app com/ 点击 "创建新应用" 输入您的应用名称,例如, "callbackshortcutsapp" , 然后点击 "创建" 2 2 设置数据模型 在您的应用程序仪表板中,导航到 "数据库" 部分。 点击 "创建一个类" 。 在模态中: 选择 "自定义" 。 输入 "项目" 作为类名。 点击 "创建类" 。 2 3 向类中添加列 在 "项目" 类中,点击 "+" 以添加新列。 添加以下列: 名称 类型 字符串 描述 类型 字符串 向 "项目" 类中添加一些示例数据。例如: 2 4 获取应用程序凭据 导航到 应用设置 > 安全性与密钥 记下你的 应用程序 id 和 客户端密钥 步骤 3 – 在你的 flutter 应用中初始化 parse 打开 lib/main dart 并按如下方式修改它 import 'package\ flutter/material dart'; import 'package\ parse server sdk flutter/parse server sdk dart'; import 'home page dart'; // you'll create this file next void main() async { widgetsflutterbinding ensureinitialized(); const keyapplicationid = 'your application id'; const keyclientkey = 'your client key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize( keyapplicationid, keyparseserverurl, clientkey keyclientkey, debug true, ); runapp(myapp()); } class myapp extends statelesswidget { @override widget build(buildcontext context) { return materialapp( title 'callback shortcuts app', theme themedata( primaryswatch colors blue, ), home homepage(), ); } } 将 'your application id' 和 'your client key' 替换为你的实际 back4app 凭据 步骤 4 – 从 back4app 获取数据 创建一个新文件 lib/home page dart import 'package\ flutter/material dart'; import 'package\ parse server sdk flutter/parse server sdk dart'; class homepage extends statefulwidget { @override homepagestate createstate() => homepagestate(); } class item { final string name; final string description; item(this name, this description); } class homepagestate extends state\<homepage> { list\<item> items = \[]; future\<void> fetchitems() async { final querybuilder\<parseobject> query = querybuilder\<parseobject>(parseobject('item')); final parseresponse apiresponse = await query query(); if (apiresponse success && apiresponse results != null) { setstate(() { items = apiresponse results! map((data) { final name = data get\<string>('name') ?? ''; final description = data get\<string>('description') ?? ''; return item(name, description); }) tolist(); }); } else { print('error fetching data ${apiresponse error? message}'); } } @override void initstate() { super initstate(); fetchitems(); } @override widget build(buildcontext context) { return scaffold( appbar appbar( title text('callback shortcuts app'), ), body items isempty ? center(child circularprogressindicator()) listview\ builder( itemcount items length, itembuilder (context, index) { return listtile( title text(items\[index] name), subtitle text(items\[index] description), ); }, ), ); } } 解释 item 类 一个模型类,用于表示从 back4app 获取的项目。 fetchitems() 从 item 类中获取数据,并更新 items 列表。 build() 显示项目列表或在数据仍在获取时显示加载指示器。 步骤 5 – 实现 callbackshortcuts 现在,让我们添加键盘快捷键以刷新数据并在列表中导航。 5 1 添加焦点和回调快捷键小部件 修改 build() 方法在 home page dart @override widget build(buildcontext context) { return scaffold( appbar appbar( title text('callback shortcuts app'), ), body focus( autofocus true, child callbackshortcuts( bindings { singleactivator(logicalkeyboardkey keyr, control true) () { fetchitems(); scaffoldmessenger of(context) showsnackbar( snackbar(content text('data refreshed')), ); }, singleactivator(logicalkeyboardkey arrowdown) () { focusnextitem(); }, singleactivator(logicalkeyboardkey arrowup) () { focuspreviousitem(); }, }, child items isempty ? center(child circularprogressindicator()) listview\ builder( itemcount items length, itembuilder (context, index) { return focusableactiondetector( child listtile( title text(items\[index] name), subtitle text(items\[index] description), ), ); }, ), ), ), ); } 解释 焦点小部件 包裹主体以确保它可以接收焦点和键盘事件。 回调快捷键 将键盘快捷键映射到回调函数。 ctrl + r 通过调用 fetchitems() 刷新数据。 向下箭头 将焦点移动到下一个项目。 向上箭头 将焦点移动到上一个项目。 可聚焦操作检测器 使每个 listtile 可聚焦以便使用键盘导航。 5 2 实现导航功能 添加以下方法以处理项目导航: void focusnextitem() { final focus = focusscope of(context); if (focus canrequestfocus) { focus nextfocus(); } } void focuspreviousitem() { final focus = focusscope of(context); if (focus canrequestfocus) { focus previousfocus(); } } 步骤 6 – 测试键盘快捷键 6 1 运行应用程序 在你的终端中,运行: flutter run 6 2 测试刷新快捷键 在应用运行时,按 ctrl + r (或在 macos 上按 cmd + r )。 你应该会看到一个 snackbar 消息,显示 "数据已刷新" 。 如果数据有任何更改,列表应该会更新。 6 3 测试导航快捷键 使用 向下箭头 和 向上箭头 键在列表中导航。 你应该会看到焦点移动到不同的项目上。 结论 在本教程中,你学习了如何在 flutter 应用程序中实现键盘快捷键,使用 callbackshortcuts 。你集成了 back4app 来获取和显示数据,并通过允许用户使用键盘快捷键与应用程序交互来增强用户体验。 关键要点 callbackshortcuts 通过将键盘组合直接映射到回调函数,简化添加键盘快捷键的过程。 焦点管理 对于小部件接收键盘事件至关重要。 back4app 集成 提供可扩展的后端以存储和检索数据。 后续步骤 扩展快捷键 添加更多键盘快捷键以实现额外功能。 平台特定修饰符 处理不同平台之间修饰键的差异(例如,control 与 command)。 可访问性 确保您的应用程序通过支持键盘导航和屏幕阅读器而可访问。 错误处理 改善从 back4app 获取数据时的错误处理。 其他资源 back4app 文档 https //www back4app com/docs flutter 的 parse sdk 指南 https //docs parseplatform org/flutter/guide/ flutter 官方文档 https //flutter dev/docs callbackshortcuts 小部件 https //api flutter dev/flutter/widgets/callbackshortcuts class html 快乐编码!