12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import 'package:cpt_community/modules/community/newsfeed_detail/newsfeed_detail_vm.dart';
- import 'package:cs_resources/generated/l10n.dart';
- import 'package:cs_resources/theme/app_colors_theme.dart';
- import 'package:flutter/material.dart';
- import 'package:flutter_hooks/flutter_hooks.dart';
- import 'package:hooks_riverpod/hooks_riverpod.dart';
- import 'package:shared/utils/log_utils.dart';
- import 'package:widgets/my_text_view.dart';
- /// 多行输入框
- class CommentsTextareaInput extends HookConsumerWidget {
- bool showCounter = true;
- bool autoFocus = false;
- CommentsTextareaInput({Key? key,this.showCounter = true, this.autoFocus = false}): super(key: key);
- @override
- Widget build(BuildContext context, WidgetRef ref) {
- final state = ref.watch(newsfeedDetailVmProvider);
- final vm = ref.read(newsfeedDetailVmProvider.notifier);
- final noteCount = useState(0);
- useEffect((){
- return (){
- vm.resetCommentField();
- Log.d('dispose');
- };
- },[]);
- return _buildTextAreaLayout(context, ref, state, vm, noteCount);
- }
- Widget _buildTextAreaLayout(BuildContext context, ref, state, vm , noteCount){
- return Row(
- mainAxisSize: MainAxisSize.max,
- children: [
- Expanded(
- child: TextField(
- cursorColor: context.appColors.authFiledText,
- cursorWidth: 1.5,
- autofocus: autoFocus,
- textAlign: TextAlign.start,
- enabled: true,
- maxLines: null,
- expands: true,
- focusNode: state.commentFieldInfo['focusNode'],
- controller: state.commentFieldInfo!['controller'],
- decoration: InputDecoration(
- isDense: true,
- isCollapsed: true,
- border: InputBorder.none,
- hintText: state.commentFieldInfo!['hintText'],
- hintStyle: TextStyle(
- color: context.appColors.authFiledHint,
- fontSize: 14.0,
- fontWeight: FontWeight.w300,
- ),
- ),
- style: TextStyle(
- color: context.appColors.authFiledText,
- fontSize: 14.0,
- fontWeight: FontWeight.w300,
- ),
- textInputAction: TextInputAction.done,
- onSubmitted: (value) {
- // FocusScope.of(context).unfocus();
- },
- onChanged: (text) {
- // 当文本改变时,更新字符数量
- Log.d("text $text");
- Log.d("文本改变 ${state.commentFieldInfo!['controller']?.text}");
- if(showCounter){
- noteCount.value = text.length;
- }
- },
- ),
- ),
- ],
- );
- }
- }
|