渲染TextFeild问题

时间:2019-11-19 18:15:03

标签: flutter dart

我在用dart创建TextFeild时遇到解决Redering问题的问题。

通过简短的搜索,我发现最好将上述小部件放入容器中,尽管它不能帮助解决该问题。

我在用dart创建TextFeild时遇到解决Redering问题的问题。

通过简短的搜索,我发现最好将上述小部件放入容器中,尽管它不能帮助解决该问题。

主屏幕类:

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:notifier_demo/models/user.dart';

class TextFieldComp extends StatefulWidget{
  User _user;
  TextFieldComp(User user) {
    _user=user;

  }

  @override
  _TextFieldCompState createState() => _TextFieldCompState();
}

class _TextFieldCompState extends State<TextFieldComp> {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Column(
      children: <Widget>[
        Container(
          child:    TextFormField(
              decoration: InputDecoration(labelText: 'First Name'),
              validator: (value) {
                if (value.isEmpty)
                  return "Please insert Value";
                else
                  return null;
              },
              onSaved: (val) =>
                  setState(() => widget._user.firstName = val)
          )
        ),
        Container(
                 child: TextFormField(
                  decoration: InputDecoration(labelText: 'Last Name'),
            validator: (value) {
            if (value.isEmpty)
            return "Please insert Value";
            else
            return null;
            },
            onSaved: (val) =>
            setState(() => widget._user.lastName = val)

    ),
        ),


      ],
    );


  }
}

TextFeild类:

I/flutter ( 9200): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter ( 9200): The following assertion was thrown during performLayout():
I/flutter ( 9200): RenderFlex children have non-zero flex but incoming height constraints are unbounded.
I/flutter ( 9200): When a column is in a parent that does not provide a finite height constraint, for example if it is
I/flutter ( 9200): in a vertical scrollable, it will try to shrink-wrap its children along the vertical axis. Setting a
I/flutter ( 9200): flex on a child (e.g. using Expanded) indicates that the child is to expand to fill the remaining
I/flutter ( 9200): space in the vertical direction.
I/flutter ( 9200): These two directives are mutually exclusive. If a parent is to shrink-wrap its child, the child
I/flutter ( 9200): cannot simultaneously expand to fit its parent.
I/flutter ( 9200): Consider setting mainAxisSize to MainAxisSize.min and using FlexFit.loose fits for the flexible
I/flutter ( 9200): children (using Flexible rather than Expanded). This will allow the flexible children to size
I/flutter ( 9200): themselves to less than the infinite remaining space they would otherwise be forced to take, and
I/flutter ( 9200): then will cause the RenderFlex to shrink-wrap the children rather than expanding to fit the maximum
I/flutter ( 9200): constraints provided by the parent.
I/flutter ( 9200): If this message did not help you determine the problem, consider using debugDumpRenderTree():
I/flutter ( 9200):   https://flutter.dev/debugging/#rendering-layer
I/flutter ( 9200):   http://api.flutter.dev/flutter/rendering/debugDumpRenderTree.html
I/flutter ( 9200): The affected RenderFlex is:
I/flutter ( 9200):   RenderFlex#6a02e relayoutBoundary=up12 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE(creator: Column ← _SingleChildViewport ← IgnorePointer-[GlobalKey#30dc5] ← Semantics ← _PointerListener ← Listener ← _GestureSemantics ← RawGestureDetector-[LabeledGlobalKey<RawGestureDetectorState>#7b5bd] ← _PointerListener ← Listener ← _ScrollableScope ← _ScrollSemantics-[GlobalKey#2b979] ← ⋯, parentData: <none> (can use size), constraints: BoxConstraints(0.0<=w<=422.7, 0.0<=h<=Infinity), size: MISSING, direction: vertical, mainAxisAlignment: start, mainAxisSize: max, crossAxisAlignment: stretch, verticalDirection: down)
I/flutter ( 9200): The creator information is set to:
I/flutter ( 9200):   Column ← _SingleChildViewport ← IgnorePointer-[GlobalKey#30dc5] ← Semantics ← _PointerListener ←
I/flutter ( 9200):   Listener ← _GestureSemantics ←
I/flutter ( 9200):   RawGestureDetector-[LabeledGlobalKey<RawGestureDetectorState>#7b5bd] ← _PointerListener ← Listener
I/flutter ( 9200):   ← _ScrollableScope ← _ScrollSemantics-[GlobalKey#2b979] ← ⋯
I/flutter ( 9200): The nearest ancestor providing an unbounded width constraint is: _RenderSingleChildViewport#e33e5 relayoutBoundary=up11 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE:
I/flutter ( 9200):   needs compositing
I/flutter ( 9200):   creator: _SingleChildViewport ← IgnorePointer-[GlobalKey#30dc5] ← Semantics ← _PointerListener ←
I/flutter ( 9200):     Listener ← _GestureSemantics ←
I/flutter ( 9200):     RawGestureDetector-[LabeledGlobalKey<RawGestureDetectorState>#7b5bd] ← _PointerListener ← Listener
I/flutter ( 9200):     ← _ScrollableScope ← _ScrollSemantics-[GlobalKey#2b979] ← RepaintBoundary ← ⋯
I/flutter ( 9200):   parentData: <none> (can use size)
I/flutter ( 9200):   constraints: BoxConstraints(0.0<=w<=422.7, 0.0<=h<=749.5)
I/flutter ( 9200):   size: MISSING
I/flutter ( 9200): See also: https://flutter.dev/layout/
I/flutter ( 9200): If none of the above helps enough to fix this problem, please don't hesitate to file a bug:
I/flutter ( 9200):   https://github.com/flutter/flutter/issues/new?template=BUG.md
I/flutter ( 9200): 
I/flutter ( 9200): User-created ancestor of the error-causing widget was:
I/flutter ( 9200):   SingleChildScrollView
I/flutter ( 9200):   file:///C:/Users/omer/AndroidStudioProjects/clima_flutter_app/notifier_demo/lib/screens/home_material_screen.dart:28:24
I/flutter ( 9200): 
I/flutter ( 9200): When the exception was thrown, this was the stack:
I/flutter ( 9200): #0      RenderFlex.performLayout.<anonymous closure> (package:flutter/src/rendering/flex.dart:691:11)
I/flutter ( 9200): #1      RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:718:10)
I/flutter ( 9200): #2      RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #3      _RenderSingleChildViewport.performLayout (package:flutter/src/widgets/single_child_scroll_view.dart:497:13)
I/flutter ( 9200): #4      RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #5      RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #6      RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #7      RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #8      RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #9      RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #10     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #11     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #12     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #13     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #14     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #15     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #16     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #17     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #18     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #19     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #20     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #21     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #22     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #23     RenderPadding.performLayout (package:flutter/src/rendering/shifted_box.dart:206:11)
I/flutter ( 9200): #24     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #25     MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:142:11)
I/flutter ( 9200): #26     _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:444:7)
I/flutter ( 9200): #27     MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:212:7)
I/flutter ( 9200): #28     RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:356:14)
I/flutter ( 9200): #29     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #30     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #31     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #32     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #33     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1232:11)
I/flutter ( 9200): #34     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #35     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #36     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #37     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #38     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #39     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #40     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #41     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #42     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #43     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #44     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #45     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #46     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #47     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #48     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #49     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #50     RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3140:13)
I/flutter ( 9200): #51     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #52     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:510:15)
I/flutter ( 9200): #53     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #54     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #55     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #56     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #57     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #58     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #59     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #60     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #61     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #62     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #63     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #64     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 9200): #65     RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
I/flutter ( 9200): #66     RenderView.performLayout (package:flutter/src/rendering/view.dart:152:13)
I/flutter ( 9200): #67     RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1578:7)
I/flutter ( 9200): #68     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:844:18)
I/flutter ( 9200): #69     RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:341:19)
I/flutter ( 9200): #70     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:761:13)
I/flutter ( 9200): #71     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:280:5)
I/flutter ( 9200): #72     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1033:15)
I/flutter ( 9200): #73     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:975:9)
I/flutter ( 9200): #74     SchedulerBinding.scheduleWarmUpFrame.<anonymous closure> (package:flutter/src/scheduler/binding.dart:784:7)
I/flutter ( 9200): #83     _Timer._runTimers (dart:isolate-patch/timer_impl.dart:382:19)
I/flutter ( 9200): #84     _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:416:5)
I/flutter ( 9200): #85     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:172:12)
I/flutter ( 9200): (elided 8 frames from package dart:async and package dart:async-patch)
I/flutter ( 9200): 
I/flutter ( 9200): The following RenderObject was being processed when the exception was fired: RenderFlex#6a02e relayoutBoundary=up12 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE:
I/flutter ( 9200):   creator: Column ← _SingleChildViewport ← IgnorePointer-[GlobalKey#30dc5] ← Semantics ←
I/flutter ( 9200):     _PointerListener ← Listener ← _GestureSemantics ←
I/flutter ( 9200):     RawGestureDetector-[LabeledGlobalKey<RawGestureDetectorState>#7b5bd] ← _PointerListener ← Listener
I/flutter ( 9200):     ← _ScrollableScope ← _ScrollSemantics-[GlobalKey#2b979] ← ⋯
I/flutter ( 9200):   parentData: <none> (can use size)
I/flutter ( 9200):   constraints: BoxConstraints(0.0<=w<=422.7, 0.0<=h<=Infinity)
I/flutter ( 9200):   size: MISSING
I/flutter ( 9200):   direction: vertical
I/flutter ( 9200):   mainAxisAlignment: start
I/flutter ( 9200):   mainAxisSize: max
I/flutter ( 9200):   crossAxisAlignment: stretch
I/flutter ( 9200):   verticalDirection: down
I/flutter ( 9200): This RenderObject had the following descendants (showing up to depth 5):
I/flutter ( 9200):     child 1: RenderFlex#e703f NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):       child 1: RenderSemanticsAnnotations#65551 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):         child: RenderMouseRegion#4ff1d NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):           child: RenderIgnorePointer#2bb3e NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):             child: RenderPointerListener#20294 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):       child 2: RenderSemanticsAnnotations#06bc1 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):         child: RenderMouseRegion#57aa7 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):           child: RenderIgnorePointer#7eca8 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):             child: RenderPointerListener#fa0bd NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):     child 2: RenderPadding#7190e NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):       child: RenderLimitedBox#1277a NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):         child: RenderConstrainedBox#e1fb0 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 9200):     child 3: RenderMergeSemantics#583ac NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):       child: RenderMouseRegion#545d8 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):         child: RenderSemanticsGestureHandler#93036 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):           child: RenderPointerListener#56f31 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):             child: RenderSemanticsAnnotations#13b79 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):     child 4: RenderMergeSemantics#43d98 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):       child: RenderMouseRegion#75318 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):         child: RenderSemanticsGestureHandler#0566c NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):           child: RenderPointerListener#a678e NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):             child: RenderSemanticsAnnotations#b65af NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):     child 5: RenderMergeSemantics#1223e NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):       child: RenderMouseRegion#99b6f NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):         child: RenderSemanticsGestureHandler#cb1e4 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):           child: RenderPointerListener#5cb96 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200):             child: RenderSemanticsAnnotations#d0902 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 9200): ════════════════════════════════════════════════════════════════════════════════════════════════════

日志:

{{1}}

1 个答案:

答案 0 :(得分:1)

您可以在下面复制粘贴运行完整代码
ScaffoldTextFieldComp中使用Flexible并使用Expanded flex来控制其他人

代码段

return Container(     
      child: Column(
        children: <Widget>[
          Flexible(
              child: TextFormField(
                  decoration: InputDecoration(labelText: 'First Name'),

工作演示

enter image description here

完整的测试代码

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        // This is the theme of your application.
        //
        // Try running your application with "flutter run". You'll see the
        // application has a blue toolbar. Then, without quitting the app, try
        // changing the primarySwatch below to Colors.green and then invoke
        // "hot reload" (press "r" in the console where you ran "flutter run",
        // or simply save your changes to "hot reload" in a Flutter IDE).
        // Notice that the counter didn't reset back to zero; the application
        // is not restarted.
        primarySwatch: Colors.blue,
      ),
      home: HomeMaterialScreen(),
    );
  }
}



class HomeMaterialScreen extends StatefulWidget {
  @override
  _HomeMaterialScreenState createState() => _HomeMaterialScreenState();
}

class _HomeMaterialScreenState extends State<HomeMaterialScreen> {
  User _user;
  final _formKey = GlobalKey<FormState>();

  List<User> userList = [
    User(firstName: "abc", lastName: "def", newsletter: true),
    User(firstName: "123", lastName: "456", newsletter: false),
    User(firstName: "1", lastName: "456", newsletter: false),
    User(firstName: "2", lastName: "456", newsletter: false),
    User(firstName: "3", lastName: "456", newsletter: false),
    User(firstName: "4", lastName: "456", newsletter: false),
    User(firstName: "5", lastName: "456", newsletter: false),
    User(firstName: "6", lastName: "456", newsletter: false),
    User(firstName: "1a", lastName: "456", newsletter: false),
    User(firstName: "2a", lastName: "456", newsletter: false),
    User(firstName: "3a", lastName: "456", newsletter: false),
    User(firstName: "4a", lastName: "456", newsletter: false),
    User(firstName: "5a", lastName: "456", newsletter: false),
    User(firstName: "6a", lastName: "456", newsletter: false),
  ];

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    _user = new User(newsletter: false);
  }

  @override
  Widget build(BuildContext context) {
    //UserNotifier userNotifier= Provider.of<UserNotifier>(context);

    return Scaffold(
      appBar: AppBar(
        title: Text('Profile'),
      ),
      body: Container(
        height: MediaQuery.of(context).size.height,
        padding: const EdgeInsets.symmetric(vertical: 16, horizontal: 16),
        child: Builder(
            builder: (context) => Form(
                key: _formKey,
                child: SingleChildScrollView(
                  child: Container(
                    height: MediaQuery.of(context).size.height,
                    child: Column(
                      crossAxisAlignment: CrossAxisAlignment.stretch,
                      children: <Widget>[
                        Flexible(child: TextFieldComp(_user)),
                        Container(
                          padding: const EdgeInsets.fromLTRB(0, 50, 0, 20),
                        ),
                       SwitchListTile(
                          title: const Text('Monthly newsletter'),
                          value: false,
                          onChanged: (bool val) =>
                              setState(() => _user.newsletter = val),
                        ),
                        CheckboxListTile(
                          title: const Text('Coocking'),
                          value: false,
                         /* onChanged: (val) => setState(
                                  () => _user.passions[User.PassionCooking] = val),*/
                        ),
                        CheckboxListTile(
                            title: const Text('Hiking'),
                            value: true,
                            /*onChanged: (val) {
                              setState(() {
                                userNotifier.addUser(_user);
                                _user.passions[User.PassionHiking] = val;
                              });
                            }*/
                        ),

                        Expanded(
                          flex: 1,
                          child: Container(
                              padding: const EdgeInsets.symmetric(
                                  vertical: 16, horizontal: 16),
                              child: RaisedButton(
                                onPressed: () {
                                  final form = _formKey.currentState;
                                  if (form.validate()) {
                                    form.save();
                                    //_user.save();
                                    _showDialog(context);
                                  }
                                },
                              )),
                        ),
                        Expanded(
                            flex: 3,
                            child: ListView.builder(
                          itemBuilder: (BuildContext context, int index) =>
                              Text(' ${userList[index].firstName}'),
                          itemCount: userList.length,
                        )),
                      ],
                    ),
                  ),
                ))),
      ),
    );
  }

  _showDialog(BuildContext context) {
    Scaffold.of(context).showSnackBar(SnackBar(
      content: Text('Submitting Form'),
    ));
  }
}

class User {
  String firstName;
  String lastName;
  bool newsletter;

  User({
    this.firstName,
    this.lastName,
    this.newsletter,
  });
}

class TextFieldComp extends StatefulWidget {
  User _user;
  TextFieldComp(User user) {
    _user = user;
  }

  @override
  _TextFieldCompState createState() => _TextFieldCompState();
}

class _TextFieldCompState extends State<TextFieldComp> {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Container(
      //height: 200,
      child: Column(
        children: <Widget>[
          Flexible(
              child: TextFormField(
                  decoration: InputDecoration(labelText: 'First Name'),
                  validator: (value) {
                    if (value.isEmpty)
                      return "Please insert Value";
                    else
                      return null;
                  },
                  onSaved: (val) =>
                      setState(() => widget._user.firstName = val))),
          Flexible(
            child: TextFormField(
                decoration: InputDecoration(labelText: 'Last Name'),
                validator: (value) {
                  if (value.isEmpty)
                    return "Please insert Value";
                  else
                    return null;
                },
                onSaved: (val) => setState(() => widget._user.lastName = val)),
          ),
        ],
      ),
    );
  }
}