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

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

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