반응형
아래와 같이 코딩을 했을 경우 입력을 위해 키보드를 사용하려고 하면 키보드가 위에서 올라오면서 showModalBottomSheet()를 가리게 됩니다.
IconButton(
onPressed: () {
showModalBottomSheet(
context: context,
builder: (context) {
return SizedBox(
height: 250,
child: AddTask(),
);
},
);
},
icon: const Icon(
Icons.add,
),
import 'package:flutter/material.dart';
class AddTask extends StatefulWidget {
const AddTask({super.key});
@override
State<AddTask> createState() => _AddTaskState();
}
class _AddTaskState extends State<AddTask> {
var todoText = TextEditingController();
@override
Widget build(BuildContext context) {
return Column(
children: [
const Text("Add task"),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 10),
child: TextField(
controller: todoText,
decoration: InputDecoration(hintText: "Add task"),
),
),
ElevatedButton(
onPressed: () {
print(todoText.text);
todoText.clear();
},
child: const Text("Add"),
),
],
);
}
}
SizedBox()를 Padding()으로 감싸고 padding속성에서 padding 값을
MediaQuery.of(context).viewInsets 로 넣으면 해결이 됩니다.
- MediaQuery.of(context): 현재 화면과 관련된 정보를 담고 있는 MediaQuery 객체를 가져옵니다. 여기에는 화면 방향, 픽셀 밀도, 시스템 UI 요소 등의 정보가 포함됩니다.
- viewInsets: MediaQueryData 객체의 속성으로, 시스템 UI 요소 (예: 키보드) 에 의해 앱 콘텐츠 영역이 침범되는 양을 나타냅니다. EdgeInsets 객체이며, top, right, bottom, left 여백 정보를 가지고 있습니다.
반응형
'Flutter > Flutter Programming' 카테고리의 다른 글
플러터와 퓨시아 OS: 둘 사이의 밀접한 관계 (0) | 2024.07.11 |
---|---|
플러터에서 Dismissible 위젯 사용 방법과 옵션 (0) | 2024.07.11 |
플러터에서 showModalBottomSheet() 위젯 사용법 및 옵션 가이드 (0) | 2024.07.10 |
플러터 초보를 위한 Share 패키지 완전 가이드: 간편하게 공유하기 (0) | 2024.07.09 |
플러터 초보를 위한 Charts Flutter 완전 가이드: 아름다운 차트 만들기 (0) | 2024.07.09 |