Как взять массив от пользователя во флаттере из текстового поля? - PullRequest
0 голосов
/ 26 апреля 2018

Сборка виджета (контекст BuildContext) {

TextField XnumField = new TextField(
  keyboardType: TextInputType.numberWithOptions(),
  decoration: new InputDecoration(labelText: "X array"),
  onSubmitted: (String text){
      for(i = 0; i < 4; i++){
        X[i] = int.parse(text);
      }
  },
);

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

demo

Привет, Если вы ищете что-то вроде этого, вы идете.

    import 'package:flutter/material.dart';

void main() {
  runApp(new MaterialApp(
    home: new DemoScreen(),
  ));
}

class DemoScreen extends StatefulWidget {
  @override
  _DemoScreenState createState() => new _DemoScreenState();
}

class _DemoScreenState extends State<DemoScreen> {
  List<int> _myList = new List();
  TextEditingController _myController = new TextEditingController();
  String _result = "";
  String _inputList = "";

  setSum() {
    int sum = 0;

    for (int i = 0; i < _myList.length; i++) {
      sum += _myList[i];
      if (i == 0)
        _inputList = "${_myList[i]}";
      else
        _inputList = _inputList + " + ${_myList[i]}";
    }
    _result = "$sum";
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text("Demo App"),
      ),
      body: new Column(
        children: <Widget>[
          new Container(
            margin: new EdgeInsets.symmetric(vertical: 10.0),
            child: new Text(
              _inputList,
              style: new TextStyle(fontSize: 40.0),
            ),
          ),
          new Container(
            margin: new EdgeInsets.symmetric(vertical: 25.0),
            child: new Text(
              _result,
              style: new TextStyle(fontSize: 70.0),
            ),
          ),
          new Container(
            margin: new EdgeInsets.symmetric(horizontal: 50.0),
            child: new TextField(
              controller: _myController,
              keyboardType: TextInputType.number,
              onSubmitted: (text) {
                setState(() {
                  _myList.add(int.parse(text));
                  setSum();
                  _myController.clear();
                });
              },
            ),
          )
        ],
      ),
    );
  }
}

Надеюсь, это поможет:)

0 голосов
/ 26 апреля 2018

Что-то вроде ...

import 'dart:core';

List<int> BuildIntArray(String input) {
  var outList = new List<int>();
  final _delimiter = ',';
  final _values = input.split(_delimiter);
  _values.forEach((item) {
    outList.add(int.parse(item));
    });
  return outList;
}

Что бы ...

import 'package:IntegerArray/IntegerArray.dart' as IntegerArray;

main(List<String> arguments) {

  final input = "1,2,3,4,5";
  final intInputValues = IntegerArray.BuildIntArray(input);
  print (intInputValues);

  int sum = 0;
  intInputValues.forEach((item) {
    sum+=item;
  });

  print (sum);

}

... сделать это ...

Observatory listening on http://127.0.0.1:64499/

[1, 2, 3, 4, 5]
15

Process finished with exit code 0

Я не вижу "tryParse" для отфильтровывания нечисловых значений ... но с некоторой проверкой / проверкой ошибок вы можете добавить к этому ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...