我想要实现的是在查看此小部件时,RawKeyboardListener当TextField未选择/聚焦时立即开始收听。它运行HandleKey function来处理我想用keyCode.
我遇到的问题是第一次运行应用程序时,handleKey function似乎运行了两次。所以在下面的例子中,why does this run twice $_keyCode当我只输入 1 个键时,它会打印TWICE。我认为它会听 keyUp 和 keyDown。我想要的结果是它只运行一次......
但是,当我选择 TextField 并使用模拟器键盘定期提交时,代码也能正常工作。
我很难理解为什么它在与 TextField 交互后才出现问题。我觉得它需要一个Future或await某个地方?但我不知道。
请帮忙。
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'dart:async';
class KeyboardListener extends StatefulWidget {
KeyboardListener();
@override
_RawKeyboardListenerState createState() => new _RawKeyboardListenerState();
}
class _RawKeyboardListenerState extends State<KeyboardListener> {
TextEditingController _controller = new TextEditingController();
FocusNode _textNode = new FocusNode();
@override
initState() {
super.initState();
}
//Handle when submitting
void …Run Code Online (Sandbox Code Playgroud) 我有一个根类RootPage,StatefulWidget它始终在视图中.我想改变body的RootPage是通过控制RootPage's currentPage Widget从不同的类,如我的FeedPage类和其他类,我做什么呢?
示例代码
import 'package:flutter/material.dart';
class RootPage extends StatefulWidget {
@override
_RootPageState createState() => new _RootPageState();
}
class _RootPageState extends State<RootPage> {
FeedPage feedPage;
Widget currentPage;
@override
void initState() {
super.initState();
feedPage = FeedPage();
currentPage = feedPage;
}
@override
Widget build(BuildContext context) {
return new Scaffold(
//Current page to be changed from other classes too?
body: currentPage
);
}
}
class FeedPage extends StatefulWidget {
@override
_feedPageState …Run Code Online (Sandbox Code Playgroud)