У меня уйма времени на попытку миграции, и я застрял на StreamBuilder. Ошибка The operator '[]' isn't defined for the class 'Object'.
Вот мой код, который работал до миграции:
StreamBuilder(
stream: userCollection
.doc(_uid)
.collection('lists')
.doc(itemID)
.snapshots(),
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
case ConnectionState.waiting:
return Center(child: CircularProgressIndicator());
break;
default:
// Completed with error
if (snapshot.hasError)
return Text(snapshot.error.toString());
// Completed with data
var itemDocument = snapshot.data!;
if(snapshot.data == null)
return CircularProgressIndicator();
itemCategory = itemDocument!['category'] ?? ''; // <- ERROR HERE
itemTitleController.text = itemDocument!['title'] ?? ''; // <- ERROR HERE
_itemImportant = itemDocument!['important'] ?? false; // <- ERROR HERE
Вы распечатываете/записываете, какой itemDocument на самом деле возвращает, вместо того, чтобы предполагать, что 100% - это карта?
Я пока ничего не могу распечатать, потому что у меня миллион ошибок, которые не позволяют запустить сборку.
Тогда вы должны исправить это в первую очередь. Откуда вы знаете, что на самом деле выдает ошибку, если код не собирается? Если код строится, и вы действительно получаете сообщение об ошибке, то вы сможете распечатать это значение. Если нет, проверьте, что вам говорит IDE.
Мне не нужно было обновлять приложение полтора года, а теперь я столкнулся со всеми этими изменениями. Обновил IDE, флаттер, дротик, все пакеты и т. д. теперь мне нужно сделать все не нулевым. Я просматриваю и исправляю все одно за другим, а до тех пор я продолжаю получать BUILD FAILED с исключениями... Думаю, я вернусь к этому позже. Думал, может быть что-то, что я пропустил, было легко замечено. Спасибо за попытку помочь.
При выполнении миграции с нулевой безопасностью лучше прокомментировать строки, которые дают вам ошибку, и исправить все остальное. Как только вы убедитесь, что код компилируется, вы можете вернуться к этой ошибке и убедиться, что больше ничего не ломается. Фактическая ошибка может быть любой, поскольку флаттер сломается в середине компиляции, потому что он не уверен из-за множества разных проблем.