提交 e0d939ab authored 作者: shixiaochen's avatar shixiaochen

1、优化MyScrollView(适配iOS软键盘隐藏);

上级 911eb6be
......@@ -4,6 +4,7 @@ import 'package:flutter_clx_base/utils/device_utils.dart';
import 'package:flutter_clx_base/widget/normal_dialog.dart';
import 'package:flutter_clx_base_example/sample/base_list_widget_test.dart';
import 'package:flutter_clx_base_example/sample/dio_widget_test.dart';
import 'package:flutter_clx_base_example/sample/scroll_view.dart';
class Sample extends StatelessWidget {
const Sample({super.key});
......@@ -48,6 +49,10 @@ class Sample extends StatelessWidget {
" deviceSerial = $deviceSerial");
},
text: '获取设备信息'),
GFButton(
fullWidthButton: true,
onPressed: () => Get.to(const ScrollViewPage()),
text: 'scrollView'),
],
);
}
......
import 'package:flutter/material.dart';
import 'package:flutter_clx_base/flutter_clx_base.dart';
class ScrollViewPage extends StatefulWidget {
const ScrollViewPage({Key? key}) : super(key: key);
@override
State<ScrollViewPage> createState() => _ScrollViewPageState();
}
class _ScrollViewPageState extends State<ScrollViewPage> {
var focusNode1 = FocusNode();
var focusNode2 = FocusNode();
@override
Widget build(BuildContext context) {
return MyScaffold(
title: "scrollView",
body: MyScrollView(
keyboardConfig: KeyBoardUtils.getKeyboardActionsConfig(
context, <FocusNode>[focusNode1, focusNode2]),
children: [
TextField(focusNode: focusNode1),
GFButton(
fullWidthButton: true,
onPressed: () {
ToastUtil.showToast("点击按钮");
},
text: '点击按钮'),
SizedBox(height: 500),
TextField(focusNode: focusNode2),
],
),
);
}
}
......@@ -3,13 +3,17 @@ import 'package:keyboard_actions/keyboard_actions.dart';
class KeyBoardUtils {
static KeyboardActionsConfig getKeyboardActionsConfig(
BuildContext context, List<FocusNode> list) {
BuildContext context,
List<FocusNode> list, {
bool displayActionBar = false, // 是否展示actionBar
}) {
return KeyboardActionsConfig(
keyboardBarColor: Colors.grey[200],
nextFocus: true,
actions: List.generate(
list.length,
(i) => KeyboardActionsItem(
displayActionBar: displayActionBar,
focusNode: list[i],
toolbarButtons: [
(node) {
......@@ -31,5 +35,3 @@ class KeyBoardUtils {
FocusManager.instance.primaryFocus?.unfocus();
}
}
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:keyboard_actions/keyboard_actions.dart';
......@@ -37,45 +36,34 @@ class MyScrollView extends StatelessWidget {
@override
Widget build(BuildContext context) {
Widget contents = SizedBox(
width: double.infinity,
child: Column(
crossAxisAlignment: crossAxisAlignment,
children: children,
Widget contents = SingleChildScrollView(
padding: padding,
physics: physics,
controller: controller,
child: SizedBox(
width: double.infinity,
child: Column(
crossAxisAlignment: crossAxisAlignment,
children: children,
),
),
);
if (defaultTargetPlatform == TargetPlatform.iOS && keyboardConfig != null) {
/// iOS 键盘处理
if (padding != null) {
contents = Padding(padding: padding!, child: contents);
}
// 软键盘处理
if (keyboardConfig != null) {
contents = KeyboardActions(
isDialog: bottomButton != null,
overscroll: overScroll,
config: keyboardConfig!,
tapOutsideBehavior: TapOutsideBehavior.opaqueDismiss,
child: contents);
} else {
contents = SingleChildScrollView(
padding: padding,
physics: physics,
controller: controller,
isDialog: bottomButton != null,
overscroll: overScroll,
config: keyboardConfig!,
tapOutsideBehavior: TapOutsideBehavior.opaqueDismiss,
child: contents,
);
}
// 设置底部按钮
if (bottomButton != null) {
contents = Column(
children: <Widget>[
Expanded(child: contents),
bottomButton!
],
children: <Widget>[Expanded(child: contents), bottomButton!],
);
}
return contents;
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论