Advertisement
Guest User

Untitled

a guest
Jan 4th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 4.16 KB | None | 0 0
  1. import 'package:flutter/material.dart';
  2. import '../omni_textfield.dart';
  3.  
  4. // Dropdown class
  5.  
  6. class Dropdown extends StatefulWidget {
  7.   final String labelText;
  8.   final String initialValue;
  9.   final List<DropdownItem> options;
  10.  
  11.   Dropdown({this.labelText, this.initialValue, this.options});
  12.  
  13.   @override
  14.   _DropdownState createState() => _DropdownState();
  15. }
  16.  
  17. class _DropdownState extends State<Dropdown> {
  18.   final GlobalKey _dropdownKey = GlobalKey();
  19.   String value;
  20.  
  21.   @override
  22.   void initState() {
  23.     super.initState();
  24.     value = widget.initialValue;
  25.   }
  26.  
  27.   void updateValue(String newValue) {
  28.     setState(() {
  29.       value = newValue;
  30.     });
  31.   }
  32.  
  33.   Offset getOffsetPosition() {
  34.     RenderBox renderBox = _dropdownKey.currentContext.findRenderObject();
  35.     Offset positionOffset = renderBox.localToGlobal(Offset.zero);
  36.     return Offset(positionOffset.dx, positionOffset.dy * -1);
  37.   }
  38.  
  39.   Future<void> openSelector() async {
  40.     final String newValue = await showMenu<String>(
  41.       initialValue: value,
  42.       position: RelativeRect.fromSize(
  43.         _dropdownKey.currentContext.findRenderObject().paintBounds,
  44.         _dropdownKey.currentContext.size
  45.       ),
  46.       context: context,
  47.       items: widget.options.map((item) =>
  48.           item.buildItem()
  49.       ).toList(),
  50.     );
  51.  
  52.     if (newValue != null) {
  53.       updateValue(newValue);
  54.     }
  55.   }
  56.  
  57.   @override
  58.   Widget build(BuildContext context) {
  59.     return OmniTextFieldCustom(
  60.       key: _dropdownKey,
  61.       onTap: openSelector,
  62.       labelText: widget.labelText,
  63.       value: value,
  64.       sufixIcon: Icon(Icons.keyboard_arrow_down),
  65.     );
  66.   }
  67. }
  68.  
  69. class DropdownItem {
  70.   final String text;
  71.   final String value;
  72.  
  73.   DropdownItem({this.text, this.value});
  74.  
  75.   PopupMenuItem<String> buildItem() => PopupMenuItem(
  76.     value: value,
  77.     child: Text(value),
  78.   );
  79. }
  80.  
  81. // Where is used
  82.  
  83. class EntityData extends StatelessWidget {
  84.   final MaskedTextController controller = MaskedTextController(
  85.     mask: '000.000.000-00'
  86.   );
  87.  
  88.   @override
  89.   Widget build(BuildContext context) {
  90.     return ListView(
  91.       children: <Widget>[
  92.         Padding(
  93.           padding: EdgeInsets.all(10.0),
  94.           child: Column(
  95.             children: <Widget>[
  96.               OmniTextField(
  97.                 labelText: 'Nome',
  98.                 hintText: 'Ex: Helio S. Junior',
  99.               ),
  100.               SizedBox(height: 10.0,),
  101.               Dropdown(
  102.                 initialValue: 'CPF',
  103.                 options: [
  104.                   DropdownItem(
  105.                     text: "CPF",
  106.                     value: "CPF"
  107.                   ),
  108.                   DropdownItem(
  109.                       text: "CNPJ",
  110.                       value: "CNPJ"
  111.                   ),
  112.                 ],
  113.                 labelText: 'Tipo de documento',
  114.               ),
  115.               SizedBox(height: 10.0,),
  116.               OmniTextField(
  117.                 controller: controller,
  118.                 inputType: TextInputType.numberWithOptions(),
  119.                 labelText: 'Número do documento',
  120.                 hintText: 'Ex: 000.000.000-00',
  121.               ),
  122.               SizedBox(height: 10.0,),
  123.               DateSelector(
  124.                 initialDate: DateTime.now().subtract(Duration(days: 1)),
  125.                 firstDate: DateTime(1900),
  126.                 lastDate: DateTime.now(),
  127.                 labelText: 'Data de nascimento',
  128.               ),
  129.               Dropdown(
  130.                 initialValue: 'CPF',
  131.                 options: [
  132.                   DropdownItem(
  133.                       text: "CPF",
  134.                       value: "CPF"
  135.                   ),
  136.                   DropdownItem(
  137.                       text: "CNPJ",
  138.                       value: "CNPJ"
  139.                   ),
  140.                 ],
  141.                 labelText: 'Tipo de documento',
  142.               ),
  143.               SizedBox(height: 10.0,),
  144.               Padding(
  145.                 padding: EdgeInsets.symmetric(vertical: 10.0),
  146.                 child: Divider(),
  147.               ),
  148.               Text('Atenção: O documento cadastrado deve ser o mesmo do titular da conta bancária')
  149.             ],
  150.           ),
  151.         )
  152.       ],
  153.     );
  154.   }
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement