Не могли бы вы вернуться и проверить, что это именно тот код, который вызывает вашу проблему.
Код, показанный здесь, не будет компилироваться вообще, поэтому трудно сказать, где настоящая проблема. В качестве альтернативы, опишите подробно, чего вы на самом деле пытаетесь достичь.
Конструктор ChatCardList.tambah(String message) {
не инициализирует chattile
, поэтому значение this.chattile
в теле должно быть null
. Вызов add
на это бросит. В противном случае этот код прекрасно работает, это то, как вы добавляете в список, хранящийся в переменной this
chattile
.
Метод Future<void> _onSocketInfo_newMessage(dynamic data) async {
создает новый ChatCardList
, используя CharCardList.tambah
, но никогда ничего с ним не делает (он не возвращает значение), поэтому никто никогда не увидит этот объект или его значение chattile
.
Кроме того, код print(chattile);
находится вне какой-либо функции или тела конструктора, поэтому он действительно объявляет абстрактный метод с именем print
, который принимает параметр с именем chattile
. Поскольку ваш класс не является абстрактным, это должно вызвать ошибку во время компиляции.
Итак, один из способов переписать вашу программу может быть:
class ChatCardList extends StatefulWidget {
List<ChatTile> chattile; //EDIT THIS
ChatCardList({Key key, this.chattile}) : super(key: key);
Future<void> _onSocketInfo_newMessage(dynamic data) {
String message = data;
this.chattile.add(message);
}
@override
_ChatCardListState createState() => new _ChatCardListState(chattile: chattile);
}
Этот код не вводит конструктор tambah
, но вместо этого обновляет список chattile
немедленно в методе _onSocketInfo_newMessage
. Этот метод все еще нужно вызывать откуда-то.