You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

108 lines
3.1 KiB

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:aku_community/base/base_style.dart';
import 'package:aku_community/utils/headers.dart';
import 'package:aku_community/widget/bee_divider.dart';
class BeeInputRow extends StatefulWidget {
final String title;
final TextEditingController? controller;
final List<TextInputFormatter>? formatters;
final String? hintText;
final bool isRequire;
//输入框还是按钮(点击弹窗选择
final bool isButton;
//是按钮时的回调
final VoidCallback? onPressed;
BeeInputRow({
Key? key,
required this.title,
required this.controller,
this.formatters,
required this.hintText,
this.isRequire = false,
}) : this.isButton = false,
this.onPressed = null,
super(key: key);
BeeInputRow.button(
{Key? key,
required this.title,
required this.hintText,
this.isRequire = false,
required this.onPressed})
: this.isButton = true,
this.formatters = null,
this.controller = null,
super(key: key);
@override
_BeeInputRowState createState() => _BeeInputRowState();
}
class _BeeInputRowState extends State<BeeInputRow> {
@override
Widget build(BuildContext context) {
var bottom = widget.isButton
? GestureDetector(
onTap: widget.onPressed,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: double.infinity,
// padding: EdgeInsets.only(top: 4.w),
child: widget.hintText!.text
.size(36.sp)
.color(ktextSubColor)
.bold
.make(),
),
BeeDivider.horizontal()
],
),
)
: TextField(
inputFormatters: widget.formatters,
controller: widget.controller,
textAlign: TextAlign.start,
onChanged: (value) {
setState(() {});
},
decoration: InputDecoration(
hintText: widget.hintText ?? '',
isDense: true,
contentPadding: EdgeInsets.zero,
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Color(0xFFE8E8E8), width: 2.w),
),
),
style: TextStyle(
fontSize: 36.sp,
fontWeight: FontWeight.bold,
color: ktextPrimary,
),
);
return Container(
width: double.infinity,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
widget.title.text.size(28.sp).color(ktextPrimary).make(),
10.w.widthBox,
(widget.isRequire ? '*' : '')
.text
.size(28.sp)
.color(Colors.red)
.make()
],
),
24.w.heightBox,
bottom,
],
),
);
}
}