- Работа с клавиатурой.
При работе с клавиатурой во Flutter вы можете использовать классыTextInput
иFocusNode
для управления видимостью и поведением клавиатуры.. Вот пример того, как можно программно отображать и скрывать клавиатуру:
import 'package:flutter/material.dart';
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
FocusNode _focusNode = FocusNode();
@override
void dispose() {
_focusNode.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: GestureDetector(
onTap: () {
// Hide the keyboard when tapping outside the text field.
FocusScope.of(context).requestFocus(FocusNode());
},
child: Center(
child: TextField(
focusNode: _focusNode,
decoration: InputDecoration(
hintText: 'Tap to show keyboard',
),
),
),
),
);
}
}
В этом примере нажатие за пределами TextField
скроет клавиатуру. Класс FocusNode
используется для управления состоянием фокуса, а FocusScope.of(context).requestFocus(FocusNode())
используется для удаления фокуса и скрытия клавиатуры.
- RenderFlex:
RenderFlex
— это гибкий алгоритм макета, используемый системой рендеринга Flutter. Он обычно используется в ситуациях, когда вам нужно создать гибкие и адаптивные макеты. Вот базовый пример использованияRenderFlex
в виджетеСтолбец
:
import 'package:flutter/material.dart';
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Widget 1'),
Text('Widget 2'),
Text('Widget 3'),
],
),
),
);
}
}
В этом примере виджет Column
использует RenderFlex
для внутреннего расположения своих дочерних элементов по вертикали. Свойству mainAxisAlignment
присвоено значение MainAxisAlignment.center
, чтобы центрировать дочерние элементы по вертикали внутри столбца.