Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'package:flutter/material.dart';
- import '../omni_textfield.dart';
- // Dropdown class
- class Dropdown extends StatefulWidget {
- final String labelText;
- final String initialValue;
- final List<DropdownItem> options;
- Dropdown({this.labelText, this.initialValue, this.options});
- @override
- _DropdownState createState() => _DropdownState();
- }
- class _DropdownState extends State<Dropdown> {
- final GlobalKey _dropdownKey = GlobalKey();
- String value;
- @override
- void initState() {
- super.initState();
- value = widget.initialValue;
- }
- void updateValue(String newValue) {
- setState(() {
- value = newValue;
- });
- }
- Offset getOffsetPosition() {
- RenderBox renderBox = _dropdownKey.currentContext.findRenderObject();
- Offset positionOffset = renderBox.localToGlobal(Offset.zero);
- return Offset(positionOffset.dx, positionOffset.dy * -1);
- }
- Future<void> openSelector() async {
- final String newValue = await showMenu<String>(
- initialValue: value,
- position: RelativeRect.fromSize(
- _dropdownKey.currentContext.findRenderObject().paintBounds,
- _dropdownKey.currentContext.size
- ),
- context: context,
- items: widget.options.map((item) =>
- item.buildItem()
- ).toList(),
- );
- if (newValue != null) {
- updateValue(newValue);
- }
- }
- @override
- Widget build(BuildContext context) {
- return OmniTextFieldCustom(
- key: _dropdownKey,
- onTap: openSelector,
- labelText: widget.labelText,
- value: value,
- sufixIcon: Icon(Icons.keyboard_arrow_down),
- );
- }
- }
- class DropdownItem {
- final String text;
- final String value;
- DropdownItem({this.text, this.value});
- PopupMenuItem<String> buildItem() => PopupMenuItem(
- value: value,
- child: Text(value),
- );
- }
- // Where is used
- class EntityData extends StatelessWidget {
- final MaskedTextController controller = MaskedTextController(
- mask: '000.000.000-00'
- );
- @override
- Widget build(BuildContext context) {
- return ListView(
- children: <Widget>[
- Padding(
- padding: EdgeInsets.all(10.0),
- child: Column(
- children: <Widget>[
- OmniTextField(
- labelText: 'Nome',
- hintText: 'Ex: Helio S. Junior',
- ),
- SizedBox(height: 10.0,),
- Dropdown(
- initialValue: 'CPF',
- options: [
- DropdownItem(
- text: "CPF",
- value: "CPF"
- ),
- DropdownItem(
- text: "CNPJ",
- value: "CNPJ"
- ),
- ],
- labelText: 'Tipo de documento',
- ),
- SizedBox(height: 10.0,),
- OmniTextField(
- controller: controller,
- inputType: TextInputType.numberWithOptions(),
- labelText: 'Número do documento',
- hintText: 'Ex: 000.000.000-00',
- ),
- SizedBox(height: 10.0,),
- DateSelector(
- initialDate: DateTime.now().subtract(Duration(days: 1)),
- firstDate: DateTime(1900),
- lastDate: DateTime.now(),
- labelText: 'Data de nascimento',
- ),
- Dropdown(
- initialValue: 'CPF',
- options: [
- DropdownItem(
- text: "CPF",
- value: "CPF"
- ),
- DropdownItem(
- text: "CNPJ",
- value: "CNPJ"
- ),
- ],
- labelText: 'Tipo de documento',
- ),
- SizedBox(height: 10.0,),
- Padding(
- padding: EdgeInsets.symmetric(vertical: 10.0),
- child: Divider(),
- ),
- Text('Atenção: O documento cadastrado deve ser o mesmo do titular da conta bancária')
- ],
- ),
- )
- ],
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement