first commit
This commit is contained in:
113
moehu/moehu_fontend/lib/widget/MyInput.dart
Normal file
113
moehu/moehu_fontend/lib/widget/MyInput.dart
Normal file
@@ -0,0 +1,113 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:peach/config/_.dart';
|
||||
import 'package:peach/utils/_.dart';
|
||||
|
||||
class MyInput extends StatefulWidget {
|
||||
final String hintText;
|
||||
|
||||
const MyInput({this.hintText});
|
||||
|
||||
@override
|
||||
_MyInput createState() => _MyInput(hintText: hintText);
|
||||
}
|
||||
|
||||
/*
|
||||
* 评论输入框
|
||||
*/
|
||||
class _MyInput extends State {
|
||||
FocusNode focusNode = FocusNode();
|
||||
TextEditingController textFieldcontroller;
|
||||
ChatType currentType = ChatType.text;
|
||||
final String hintText;
|
||||
|
||||
double height = 70;
|
||||
|
||||
_MyInput({this.hintText = "君观之有言否?"}) {
|
||||
focusNode.addListener(onFocus);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
height: Screen.setHeight(height),
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
top: BorderSide(color: ColorConfig.LineColor, width: 1),
|
||||
),
|
||||
),
|
||||
child: Column(
|
||||
children: [
|
||||
buildInputButton(),
|
||||
buildEmojiButton(),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget buildInputButton() {
|
||||
return Container(
|
||||
height: Screen.setHeight(35),
|
||||
padding: EdgeInsets.only(top: 15),
|
||||
child: TextField(
|
||||
focusNode: focusNode,
|
||||
controller: textFieldcontroller,
|
||||
cursorHeight: 20,
|
||||
decoration: InputDecoration(
|
||||
hintText: hintText,
|
||||
fillColor: Colors.white,
|
||||
border: OutlineInputBorder(borderSide: BorderSide.none),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget buildEmojiButton() {
|
||||
return ConstrainedBox(
|
||||
constraints: BoxConstraints(
|
||||
maxHeight: 25,
|
||||
),
|
||||
child: IconButton(
|
||||
splashColor: Colors.transparent,
|
||||
highlightColor: Colors.transparent,
|
||||
iconSize: 32,
|
||||
color: ColorConfig.TextColor,
|
||||
padding: EdgeInsets.only(top: 0),
|
||||
icon: currentType != ChatType.emoji
|
||||
? Icon(Icons.mood)
|
||||
: Icon(Icons.keyboard),
|
||||
onPressed: () {
|
||||
if (currentType != ChatType.emoji) {
|
||||
updateState(ChatType.emoji);
|
||||
} else {
|
||||
updateState(ChatType.text);
|
||||
}
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
onFocus() {
|
||||
// print("${focusNode.hasFocus}88888");
|
||||
// height = 200;
|
||||
}
|
||||
|
||||
updateState(ChatType type) {
|
||||
if (type == ChatType.text) {
|
||||
height = 70;
|
||||
FocusScope.of(context).requestFocus(focusNode);
|
||||
} else {
|
||||
height = 200;
|
||||
focusNode.unfocus();
|
||||
}
|
||||
print(height);
|
||||
setState(() {
|
||||
currentType = type;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
enum ChatType {
|
||||
text,
|
||||
emoji,
|
||||
}
|
||||
Reference in New Issue
Block a user