我的任务是向文本键盘添加“完成”按钮,该按钮会在CupertinoTextField
填充值后隐藏键盘。
我使用keyboard_actions lib可以正常工作,但是FormKeyboardactions()
小部件的区域变得无法滚动-我执行了
keyboard_actions库。
我试图将CupertinoTextField
作为孩子直接添加到FormKeyboardactions()
,但是它也不起作用。
父PageTemplate小部件的代码:
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
FocusScope.of(context).unfocus();
},child: Scaffold(
body: FormKeyboardactions(
child: SafeArea( //child
child: Padding(
padding: DesignPadding.V16__X,child: ListView(
shrinkWrap: true,children: this.children
),),floatingactionButton: Padding(
padding: const EdgeInsets.symmetric(horizontal: 20.0,vertical: 8),child: this.floatingactionButton,floatingactionButtonLocation: FloatingactionButtonLocation.centerFloat,);
}
具有CupertinoTextField的小部件:
class _ProductEditCommentState extends State<ProductEditComment> {
final Focusnode focusnode = Focusnode(skipTraversal: true);
KeyboardactionsConfig _buildConfig(BuildContext context) {
return KeyboardactionsConfig(
keyboardactionsPlatform: KeyboardactionsPlatform.ALL,keyboardBarColor: Colors.grey[200],nextFocus: false,actions: [
Keyboardaction(
focusnode: focusnode,closeWidget: Padding(
padding: DesignPadding.V8__X,child: Text(
"Done",style: TextStyle(
color: DesignColors.BLACK,fontSize: DesignFonts.FONT_SIZE__16,fontFamily: DesignFonts.FONT_FAMILY__MEDIUM,],);
}
@override
void initState() {
FormKeyboardactions.setKeyboardactions(context,_buildConfig(context));
super.initState();
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
ProductEditBloc bloc = BlocProvider.of(context);
return SingleChildScrollView(
child: CupertinoTextField(
focusnode: focusnode,maxLines: null,onChanged: this.widget.onChanged,controller: this.widget.controller,keyboardType: TextInputType.multiline,decoration: BoxDecoration(border: null),textCapitalization: TextCapitalization.sentences,placeholder: bloc.productComment == null || bloc.productComment.isEmpty
? "Добавить заметку"
: bloc.productComment,placeholderStyle: TextStyle(
color: DesignColors.GREY_CHROME,fontSize: DesignFonts.FONT_SIZE__14,fontFamily: DesignFonts.FONT_FAMILY__REGULAR),style: TextStyle(
color: DesignColors.GREY_COAL,padding: EdgeInsets.only(
left: DesignPadding.V10,top: DesignPadding.V14,bottom: DesignPadding.V20,);
}
}
ProductEditComment小部件的实现:
@override
Widget build(BuildContext context) {
return BlocProvider(
bloc: bloc,child: PageTemplate(
children: <Widget>[
Heading(
title: "Заметка",style: DesignFonts.STYLE_TITLE,StreamBuilder<String>(
stream: bloc.outComment,initialData: this.widget.product?.comment,builder: (context,snapshot) {
return ProductEditComment(
name: snapshot.data,onChanged: bloc.setComment,controller: bloc.commentController,);
}),]
)