मेरे पास इनपुट के साथ टेक्स्टफील्ड है: फू/लाइन 1 बार/लाइन 2

जब मैं सबमिट बटन पर क्लिक करता हूं, तो मैं सबमिट किए गए मान (नाम = फू और नाम = बार) के साथ विजेट 'नाम:' बना देता हूं, मैं उस टेक्स्टफील्ड से मूल्य कैसे बना और प्राप्त करता हूं? क्या मुझे पहले एक सूची दृश्य निर्माता बनाना होगा?

क्या कोई उदाहरण दे सकता है,

  String txt = "";
  TextEditingController controllerTxt = new TextEditingController();

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: Text('Create'),
        actions: <Widget>[
          FlatButton(
            child: Text('Submit'),
            textColor: Colors.white,
            onPressed: () {
              Navigator.pushNamed(context, '/ResultPage',
                  arguments: (controllerTxt.text));
            },
          ),
        ],
      ),
      body: new ListView(
        children: <Widget>[
          new Container(
            child: new Column(
              children: <Widget>[
                  new TextField(
                    controller: controllerTxt,
                    maxLines: 25,
                  ),
              ],
            ),
          ),
        ],
      ),
    );
  }

class _ResultPageState extends State<ResultPage> {
  String result;

  @override
  Widget build(BuildContext context) {
    RouteSettings settings = ModalRoute.of(context).settings;
    result = settings.arguments;

    return new Scaffold(
      appBar: new AppBar(
        title: Text('Create'),
        actions: <Widget>[
        ],
      ),
      body: new Container(
        padding: EdgeInsets.all(10.0),
        child: new Row(
          children: <Widget>[
            new Text('Name : '),
            Expanded(
              child: new TextField(
              enabled: false,
              decoration: new InputDecoration(
                border: new OutlineInputBorder(
                    borderSide: new BorderSide(color: Colors.black)),
                labelText: ('${result}'),
              ),
            )),
          ],
        ),
      ),
    );
  }
}
1
Sukarma 3 जून 2019, 12:07

1 उत्तर

सबसे बढ़िया उत्तर

मुझे जो समझ में आया उसके अनुसार मेरा समाधान है

तो मुझे लगता है कि आपके पास मल्टीलाइन टेक्स्ट फ़ील्ड है

enter image description here

और आप कुछ ऐसा चाहते हैं

enter image description here

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  TextEditingController controllerTxt = new TextEditingController();

  @override
  void initState() {
    super.initState();
  }

  String txt = "";

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: Text('Create'),
        actions: <Widget>[
          FlatButton(
            child: Text('Submit'),
            textColor: Colors.white,
            onPressed: () {
              Navigator.push(
                  context,
                  MaterialPageRoute(
                      builder: (context) => ResultPage(
                            result: controllerTxt.text,
                          )));
            },
          ),
        ],
      ),
      body: new ListView(
        children: <Widget>[
          new Container(
            child: new Column(
              children: <Widget>[
                new TextField(
                  controller: controllerTxt,
                  maxLines: 25,
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }
}

class ResultPage extends StatefulWidget {
  final String result;

  const ResultPage({Key key, this.result}) : super(key: key);

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

class _ResultPageState extends State<ResultPage> {
  List<String> lines;

  @override
  void initState() {
    super.initState();

    lines = widget.result.split('\n');
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
        appBar: new AppBar(
          title: Text('Create'),
          actions: <Widget>[],
        ),
        body: Column(
          children: lines
              .map((line) => Container(
                    padding: EdgeInsets.all(10.0),
                    child: new Row(
                      children: <Widget>[
                        new Text('Name : '),
                        Expanded(
                            child: new TextField(
                          enabled: false,
                          decoration: new InputDecoration(
                            border: new OutlineInputBorder(
                                borderSide:
                                    new BorderSide(color: Colors.black)),
                            labelText: (line),
                          ),
                        )),
                      ],
                    ),
                  ))
              .toList(),
        ));
  }
}


1
Praneeth Dhanushka Fernando 3 जून 2019, 10:10