Focus
와 비슷하지만 하위 항목의 범위 역할을하여Focus
와 마찬가지로 focus가 주어지거나 Widget에서 제거될때 onFocusChange
로 알람을 받을 수 있습니다.onKey
argument를 사용하면 this node 또는 포커스잡힌 자식 노드를 중 하나 가 호출될 때 key event handler 명세서를 볼 수 있다.FocusScope
위젯을 사용하지않고 직접수행해야하는 경우 FocusScopeNode
를 참조하세요.class _TodoPageState extends State<TodoPage> {
final _focusNode = FocusScopeNode();
...
void dispose() {
_focusNode.dispose();
_addBtnNode.dispose();
for (var contr in _textControllers) {
contr.dispose();
}
super.dispose();
}
Widget build(BuildContext context) {
return FocusScope(
node: _focusNode,
child: Scaffold(
...
사용할 때 다음과 같이 다음 focus를 자동으로 찾아서 포커싱역할
onEditingComplete: () => 조건
? _focusNode.nextFocus()
: _focusNode.unfocus()
FocusNode
를 기억하고 FocusNode.nextFocus
, FocusNode.previousFocus
, 또는FocusNode.focusInDirection
이 FocusNode에서 호출될 때 해당 포커스를 다음,이전 노드 또는 특정방향으로 노드를 이동시킬 수 있습니다. of
메소드를 통해 FocusNode
를 가져와 FocusNode
에서 메소드를 사용하세요.Focus.of(context).nextFocus()
Focus.of(context).unfocus()
class _TodoPageState extends State<TodoPage> {
final _focusNode = FocusScopeNode();
final _addBtnNode = FocusNode();
...
void dispose() {
_focusNode.dispose();
_addBtnNode.dispose();
for (var contr in _textControllers) {
contr.dispose();
}
super.dispose();
}
Widget build(BuildContext context) {
return FocusScope(
node: _focusNode,
child: Scaffold(
...
floatingActionButton: FloatingActionButton(
focusNode: _addBtnNode,
onPressed: (){},
child: Icon(Icons.add),
),
사용할 때 다음과 같이 수동 focusNode를 지정해주고 req를 요청해 찾아서 포커싱역할하게끔 사용
onEditingComplete: () => 조건
? _focusNode.requestFocus(_addBtnNode),
: _focusNode.unfocus()