Ошибка NoSuchMethodError: недопустимый элемент в nul: «_set»

#list #flutter #listview

#Список #трепетание #просмотр списка

Вопрос:

Я новичок в flutter. Я пытаюсь подсчитать текстовое поле Listview. Но когда вставить строку ниже в ItemBuilder

t1[index] = TextEditingController();

выдает ошибку nosuchmetoderror: недопустимый элемент в nul: «_set», но когда. Для этой цели я объявил переменную списка T1 .Пожалуйста, найдите решение для всего текстового поля в ListView.

Пример кода прилагается. Заранее спасибо.

 
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(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  List data = ["apple kg", "banana kg", "mango kg"];
  List<TextEditingController> t1;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Container(
            width: 400,
            height: 300,
            child: ListView.builder(
              itemCount: data.length,
              itemBuilder: (context, index) {
                t1[index] = TextEditingController();
                return Container(
                  width: 300,
                  decoration: BoxDecoration(
                    border: Border.all(color: Colors.blue, width: 0.5),
                  ),
                  child: Column(
                    children: [
                      Text(data[index]),
                      TextField(),
                    ],
                  ),
                );
              },
            ),
          ),
          Text("TOTAL SALE"),
        ],
      ),
    );
  }
}

 

Ответ №1:

В объявлении:

   List<TextEditingController> t1=[];
 

При ListView.builder изменении t1[index] = TextEditingController(); на

   if(index<ti.length){
     t1[index] = TextEditingController();
  }else{
     t1.add(TextEditingController());
  }
 

Причина в том, что вы объявляете пустой список, и в списке нет элемента, вы пытаетесь установить для TextEditingController значение null.

Комментарии:

1. извините, я виноват.