flutter_ime 1.0.0
flutter_ime: ^1.0.0 copied to clipboard
Windows IME(Input Method Editor) controller for Flutter. Provides functionality to switch between Korean and English input modes.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:flutter_ime/flutter_ime.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter IME Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const LoginPage(),
);
}
}
class LoginPage extends StatefulWidget {
const LoginPage({super.key});
@override
State<LoginPage> createState() => _LoginPageState();
}
class _LoginPageState extends State<LoginPage> {
final _flutterIme = FlutterIme();
final _emailController = TextEditingController();
final _passwordController = TextEditingController();
final _passwordFocusNode = FocusNode();
@override
void initState() {
super.initState();
// 비밀번호 필드가 포커스를 받으면 영어 키보드로 변경
_passwordFocusNode.addListener(() {
if (_passwordFocusNode.hasFocus) {
_flutterIme.setEnglishKeyboard();
}
});
}
@override
void dispose() {
_emailController.dispose();
_passwordController.dispose();
_passwordFocusNode.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('로그인'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextField(
controller: _emailController,
decoration: const InputDecoration(
labelText: '이메일',
border: OutlineInputBorder(),
),
keyboardType: TextInputType.emailAddress,
),
const SizedBox(height: 16),
TextField(
controller: _passwordController,
focusNode: _passwordFocusNode,
decoration: const InputDecoration(
labelText: '비밀번호',
border: OutlineInputBorder(),
),
obscureText: true,
),
const SizedBox(height: 24),
ElevatedButton(
onPressed: () {
// 로그인 처리 로직
},
child: const Text('로그인'),
),
],
),
),
);
}
}