main.dart 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import 'package:flutter/material.dart';
  2. import 'dart:async';
  3. import 'package:flutter/services.dart';
  4. import 'package:flutter_easyloading/flutter_easyloading.dart';
  5. import 'package:keyboard_android/keyboard_android.dart';
  6. import 'package:keyboard_android_example/util/ToastUtil.dart';
  7. void main() {
  8. runApp(const MyApp());
  9. ToastUtil.configLoading();
  10. }
  11. class MyApp extends StatefulWidget {
  12. const MyApp({super.key});
  13. @override
  14. State<MyApp> createState() => _MyAppState();
  15. }
  16. class _MyAppState extends State<MyApp> {
  17. /// 平台版本,安卓上就是获取安卓的系统版本号
  18. String _platformVersion = 'Unknown';
  19. /// 插件对象
  20. final _keyboardAndroidPlugin = KeyboardAndroid();
  21. /// 输入框焦点
  22. final _inputFocusNode = FocusNode();
  23. /// 是否启用悬浮窗
  24. bool _enableFloatingWindow = false;
  25. @override
  26. void initState() {
  27. super.initState();
  28. initPlatformState();
  29. }
  30. /// 获取平台版本
  31. Future<void> initPlatformState() async {
  32. String platformVersion;
  33. try {
  34. platformVersion =
  35. await _keyboardAndroidPlugin.getPlatformVersion() ??
  36. 'Unknown platform version';
  37. } on PlatformException {
  38. platformVersion = 'Failed to get platform version.';
  39. }
  40. if (!mounted) {
  41. return;
  42. }
  43. setState(() {
  44. _platformVersion = platformVersion;
  45. });
  46. }
  47. @override
  48. Widget build(BuildContext context) {
  49. return MaterialApp(
  50. // 初始化EasyLoading
  51. builder: EasyLoading.init(),
  52. home: Scaffold(
  53. appBar: AppBar(title: const Text('Plugin example app')),
  54. body: Column(
  55. mainAxisAlignment: MainAxisAlignment.center,
  56. children: [
  57. Text('当前系统平台版本: $_platformVersion\n'),
  58. SwitchListTile(
  59. title: Text('开启、关闭悬浮窗功能'),
  60. value: _enableFloatingWindow,
  61. onChanged: (newValue) {
  62. _keyboardAndroidPlugin.enableFloatingWindow(newValue);
  63. setState(() {
  64. _enableFloatingWindow = newValue;
  65. });
  66. },
  67. ),
  68. OutlinedButton(
  69. onPressed: () {
  70. _keyboardAndroidPlugin.openInputMethodSettings();
  71. },
  72. child: Text("打开输入法设置"),
  73. ),
  74. OutlinedButton(
  75. onPressed: () async {
  76. bool isTargetKeyboardEnabled =
  77. await _keyboardAndroidPlugin.isTargetKeyboardEnabled();
  78. ToastUtil.showToast(isTargetKeyboardEnabled ? "可用" : "不可用");
  79. },
  80. child: Text("自定义键盘是否可用"),
  81. ),
  82. Container(
  83. margin: EdgeInsets.symmetric(vertical: 5, horizontal: 15),
  84. child: TextField(
  85. focusNode: _inputFocusNode,
  86. decoration: InputDecoration(
  87. hintText: '请输入内容',
  88. border: OutlineInputBorder(),
  89. ),
  90. onTapUpOutside: (event) {
  91. _inputFocusNode.unfocus();
  92. },
  93. ),
  94. ),
  95. ],
  96. ),
  97. ),
  98. );
  99. }
  100. }