|
|
|
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,
|
|
|
|
],
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|