flutter - StreamBuilder 给我错误 Cannot read properties of undefined (reading 'app') CRUD APP FLUTTER
问题描述
我尝试创建streamBulider,但是当我尝试返回时出现错误:
*在构建 MyApp(dirty, state: _MyAppState#eeb7b) 时引发了以下 JSNoSuchMethodError:TypeError:无法读取未定义的属性(正在读取“应用程序”)
相关的导致错误的小部件是 MyApp lib\main.dart:13 当抛出异常时,这是堆栈*
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'todo_list.dart';
import 'package:async/async.dart';
import "package:shared_preferences/shared_preferences.dart";
import 'package:cloud_firestore/cloud_firestore.dart';
@Deprecated(
'Migrate to setEnabledSystemUIMode. '
'This feature was deprecated after v2.3.0-17.0.pre.'
)
void main() =>runApp(MaterialApp(debugShowCheckedModeBanner: false,home:MyApp()));
class MyApp extends StatefulWidget {
const MyApp({ Key? key }) : super(key: key);
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
//FirebaseFirestore firestore = FirebaseFirestore.instance;
List todos=[];
String input="";
createTodos(){
DocumentReference documentReference= FirebaseFirestore.instance.collection("MyTodos").doc(input);
Map<String ,String> todos={
"todoTitle":input
};
documentReference.set(todos).whenComplete((){
print("$input created");
});
}
void initState(){
todos.add("Item1");
todos.add("Item2");
todos.add("Item3");
}
_showDialog(){
return showDialog<void>(
context:context,
builder:(BuildContext context){
return AlertDialog(
content: TextField( onChanged:(String value){input=value;}),
//title:Center(child:const Text("Add New Task")),
actions:<Widget>[
Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
// ignore: deprecated_member_use
FlatButton(
child: Text('No'),
onPressed: () {
Navigator.of(context).pop();
}),
// ignore: deprecated_member_use
FlatButton(
child: Text('Yes'),
onPressed: () {
setState(() {
//todos.add(input);
createTodos();
Navigator.of(context).pop();
});
// SawText.clear();
})
])
],
),
],
);
}
);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body:StreamBuilder(stream: FirebaseFirestore.instance.collection("MyTodos").snapshots(),builder:(context,snapshots)
{
return ListView.builder(
itemCount:todos.length,
itemBuilder: ( BuildContext context , int index){
return Dismissible(
key:Key(todos[index]),
child: Card(
child: ListTile(title:Text(todos[index])),
)
);
});
}
),
// ListView.builder(
// itemCount:todos.length,
// itemBuilder: ( BuildContext context , int index){
// return Dismissible(key:Key(todos[index]),child: Card(child: ListTile(title:Text(todos[index])),));
// }),
floatingActionButton: FloatingActionButton(
child:const Icon(Icons.add),
onPressed: (){
_showDialog();
},
),
)
);
}
}
解决方案
推荐阅读
- javascript - 在 Vuejs 中将按钮作为表格列标题传递
- firebase - 即使我再次调用查询,Firebase 对查询的限制是否会保持该限制?
- node.js - NodeJS mssql库向数据库插入奇怪的特殊字符
- unity3d - 什么是搅拌机相机转轴?
- c# - Is there a way to designate a default property of a class?
- c# - 无法通过远程验证提交
- visual-studio - 导入模块 System.Management.Automation
- java - 如何使用 Symbol 或 Type 对象将泛型类型传递给泛型类型函数?
- reactjs - Algolia 自动完成小部件不返回“查询”值?为什么
- php - 状态展示 - 隐藏产品 - laravel