Flutter实现无需点击按钮自动跳转至下一页的方法
实现蓝牙连接后自动延迟跳转页面
解决方案步骤
- 在对应的State类中添加标记变量,避免重复触发跳转:
bool _hasNavigated = false;
- 修改StreamBuilder的builder逻辑,检测到蓝牙连接成功后自动触发延迟跳转,同时替换原按钮为状态提示:
initialData: BluetoothDeviceState.disconnected, builder: (c, snapshot) { if (snapshot.data == BluetoothDeviceState.connected) { // 仅在未执行过跳转时触发逻辑 if (!_hasNavigated) { _hasNavigated = true; // 延迟2秒跳转,可自行调整时长 Future.delayed(const Duration(seconds: 2), () { Navigator.of(context).push( MaterialPageRoute(builder: (context) => MainScreen()) ); }); } // 返回连接状态提示,替代原按钮 return const Text('已连接,即将跳转...'); } // 未连接状态的UI(可根据原有需求修改) return const Text('未连接'); },
说明
_hasNavigated用来避免StreamBuilder因状态重复更新而多次触发跳转逻辑。Future.delayed控制跳转延迟时长,可通过Duration调整(比如用milliseconds: 1500实现1.5秒延迟)。- 连接状态下返回提示文本,给用户明确的视觉反馈。
内容的提问来源于stack exchange,提问作者rania
相关产品推荐
相关产品推荐

