Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振将列表平铺导航到列表详细信息页面_Flutter - Fatal编程技术网

Flutter 颤振将列表平铺导航到列表详细信息页面

Flutter 颤振将列表平铺导航到列表详细信息页面,flutter,Flutter,有一个在屏幕上列出所有待办事项的待办事项应用程序 这是我的列表视图 class assignedTask extends StatefulWidget { static const String id = 'assignedTask'; @override _assignedTaskState createState() => _assignedTaskState(); } class _assignedTaskState ext

有一个在屏幕上列出所有待办事项的待办事项应用程序 这是我的列表视图

   class assignedTask extends StatefulWidget {
      static const String id = 'assignedTask';
      @override
      _assignedTaskState createState() => _assignedTaskState();
    }

    class _assignedTaskState extends State<assignedTask> {
      String Title;
      String Summary;

      var tasks;

      crudMedthods crudObj = new crudMedthods();

      var documentID;
      var documents;



      Future<bool> addDialog(BuildContext context) async {
        return showDialog(
            context: context,
            barrierDismissible: false,
            builder: (BuildContext context) {
              return AlertDialog(
                title: Text('Add Data', style: TextStyle(fontSize: 15.0)),
                content: Container(
                  height: 125.0,
                  width: 150.0,
                  child: Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: <Widget>[
                      TextField(
                        decoration: InputDecoration(hintText: 'Enter Title'),
                        onChanged: (value) {
                          this.Title = value;
                        },
                      ),
                      SizedBox(height: 5.0),
                      TextField(
                        decoration: InputDecoration(hintText: 'Enter Summary'),
                        onChanged: (value) {
                          this.Summary = value;
                        },
                      ),
                    ],
                  ),
                ),
                actions: <Widget>[
                  FlatButton(
                    child: Text('Add'),
                    textColor: Colors.blue,
                    onPressed: () {
                      Navigator.of(context).pop();
                      crudObj.addData({
                        'Title': this.Title,
                        'Summary': this.Summary
                      }).then((result) {
                        dialogTrigger(context);
                      }).catchError((e) {
                        print(e);
                      });
                    },
                  )
                ],
              );
            });
      }

      Future<bool> updateDialog(BuildContext context, selectedDoc) async {

        return showDialog(
            context: context,
            barrierDismissible: false,
            builder: (BuildContext context) {
              return AlertDialog(
                title: Text('Update Data', style: TextStyle(fontSize: 15.0)),
                content: Container(
                  height: 125.0,
                  width: 150.0,
                  child: Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: <Widget>[
                      TextField(
                        decoration: InputDecoration(hintText: 'Title'),
                        onChanged: (value) {
                          this.Title = value;
                        },
                      ),
                      SizedBox(height: 5.0),
                      TextField(
                        decoration: InputDecoration(hintText: 'Enter Summary'),
                        onChanged: (value) {
                          this.Summary = value;
                        },
                      ),
                    ],
                  ),
                ),
                actions: <Widget>[
                  FlatButton(
                    child: Text('Update'),
                    textColor: Colors.blue,
                    onPressed: () {
                      Navigator.of(context).pop();
                      crudObj.updateData(selectedDoc, {
                        'Title': this.Title,
                        'Summary': this.Summary
                      }).then((result) {
                        // dialogTrigger(context);
                      }).catchError((e) {
                        print(e);
                      });
                    },
                  )
                ],
              );
            });
      }

      Future<bool> dialogTrigger(BuildContext context) async {
        return showDialog(
            context: context,
            barrierDismissible: false,
            builder: (BuildContext context) {
              return AlertDialog(
                title: Text('Job Done', style: TextStyle(fontSize: 15.0)),
                content: Text('Added'),
                actions: <Widget>[
                  FlatButton(
                    child: Text('Alright'),
                    textColor: Colors.blue,
                    onPressed: () {
                      Navigator.of(context).pop();
                    },
                  )
                ],
              );
            });
      }

      @override
      void initState() {
        crudObj.getData().then((results) {
          setState(() {
            tasks = results;
          });
        });
        super.initState();
      }

      @override
      Widget build(BuildContext context) {
        return new Scaffold(
            appBar: AppBar(
              title: Text('Assigned Tasks'),
              actions: <Widget>[
                IconButton(
                  icon: Icon(Icons.add),
                  onPressed: () {
                    addDialog(context);
                  },
                ),
                IconButton(
                  icon: Icon(Icons.refresh),
                  onPressed: () {
                    crudObj.getData().then((results) {
                      setState(() {
                        tasks = results;
                      });
                    });
                  },
                )
              ],
            ),
            body: _TaskList(),
        );
      }

      Widget _TaskList() {
        if (tasks != null) {
          return StreamBuilder(
            stream: tasks,
            // ignore: missing_return
            builder: (context, snapshot) {
              if (snapshot.data != null) {
                return ListView.builder(
                  itemCount: snapshot.data.documents.length,
                  padding: EdgeInsets.all(7.0),
                  itemBuilder: (context, i) {
                    return  ListTile(
                      title: Text(snapshot.data.documents[i].data["Title"]??""),
                      subtitle: Text(snapshot.data.documents[i].data["Summary"]??""),
                      /*onTap: () {
    *//*
                        updateDialog(
                            context, snapshot.data.documents[i].documentID);
                      },*/
                        onTap: (){
                          Navigator.push(context,MaterialPageRoute(builder:(context)=>detailview(context,snapshot.data.douments[i].documentid)));
                        },

                     onLongPress: () {
                        crudObj.deleteData(snapshot.data.documents[i].documentID);
                      },
                    );
                  },
                );

              }
              return CircularProgressIndicator();
            },
          );
        } else {
          return Text('Loading, Please wait..');
        }
      }
    }
类分配任务扩展StatefulWidget{
静态常量字符串id='assignedTask';
@凌驾
_assignedTaskState createState()=>\u assignedTaskState();
}
类_assignedTaskState扩展状态{
字符串标题;
字符串摘要;
var任务;
crudMedthods crudObj=新的crudMedthods();
var-documentID;
风险值文件;
Future addDialog(BuildContext上下文)异步{
返回显示对话框(
上下文:上下文,
禁止:错误,
生成器:(BuildContext上下文){
返回警报对话框(
标题:文本(“添加数据”,样式:TextStyle(fontSize:15.0)),
内容:容器(
高度:125.0,
宽度:150.0,
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
文本字段(
装饰:输入装饰(hintText:“输入标题”),
一旦更改:(值){
这个。标题=价值;
},
),
尺寸箱(高度:5.0),
文本字段(
装饰:输入装饰(hintText:“输入摘要”),
一旦更改:(值){
这个。总结=价值;
},
),
],
),
),
行动:[
扁平按钮(
子项:文本('Add'),
textColor:Colors.blue,
已按下:(){
Navigator.of(context.pop();
crudObj.addData({
“Title”:这个。Title,
“Summary”:此为。Summary
}).然后((结果){
对话触发(上下文);
}).catchError((e){
印刷品(e);
});
},
)
],
);
});
}
Future updateDialog(BuildContext上下文,selectedDoc)异步{
返回显示对话框(
上下文:上下文,
禁止:错误,
生成器:(BuildContext上下文){
返回警报对话框(
标题:文本(“更新数据”,样式:TextStyle(fontSize:15.0)),
内容:容器(
高度:125.0,
宽度:150.0,
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
文本字段(
装饰:输入装饰(hintText:“标题”),
一旦更改:(值){
这个。标题=价值;
},
),
尺寸箱(高度:5.0),
文本字段(
装饰:输入装饰(hintText:“输入摘要”),
一旦更改:(值){
这个。总结=价值;
},
),
],
),
),
行动:[
扁平按钮(
子项:文本('Update'),
textColor:Colors.blue,
已按下:(){
Navigator.of(context.pop();
crudObj.updateData(已选择的Doc{
“Title”:这个。Title,
“Summary”:此为。Summary
}).然后((结果){
//对话触发(上下文);
}).catchError((e){
印刷品(e);
});
},
)
],
);
});
}
未来对话框触发器(BuildContext上下文)异步{
返回显示对话框(
上下文:上下文,
禁止:错误,
生成器:(BuildContext上下文){
返回警报对话框(
标题:文本(“完成工作”,样式:TextStyle(fontSize:15.0)),
内容:文本(“已添加”),
行动:[
扁平按钮(
孩子:文本(‘好’),
textColor:Colors.blue,
已按下:(){
Navigator.of(context.pop();
},
)
],
);
});
}
@凌驾
void initState(){
crudObj.getData().then((结果){
设置状态(){
任务=结果;
});
});
super.initState();
}
@凌驾
小部件构建(构建上下文){
归还新脚手架(
appBar:appBar(
标题:文本(“分配的任务”),
行动:[
图标按钮(
图标:图标(Icons.add),
已按下:(){
添加对话框(上下文);
},
),
图标按钮(
图标:图标(Icons.refresh),
已按下:(){
crudObj.getData().then((结果){
设置状态(){
任务=结果;
});
});
},
)
],
),
正文:_TaskList(),
);
}
小部件_TaskList(){
如果(任务!=null){
返回流生成器(
流:任务,
//忽略:缺少返回
建设者:
class detailview extends StatefulWidget {
  static const String id = 'detailview';

detailview(BuildContext context, selectedDoc);

  @override
  _detailviewState createState() => _detailviewState();
}



class _detailviewState extends State<detailview> {
  final TaskReference = FirebaseDatabase.instance.reference().child('Task');
  crudMedthods crudObj1 = new crudMedthods();
  /*TextEditingController _titleController;
  TextEditingController _descriptionController;*/

  var tasks;

  /*@override
  void initState() {
  super.initState();

  //_titleController = new TextEditingController(text: widget.tasks.Title);
  //_descriptionController = new TextEditingController(text: widget.tasks.Summary);
  }*

   */
  @override
  void initState() {
    crudObj1.getDetail(tasks).then((results) {
      setState(() {
        tasks = results;
      });
    });
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(

        appBar: AppBar(
          title: Text('Details of Tasks'),
          actions: <Widget>[
          ],
        ),
        body: Column(
          children: <Widget>[
            TextField(
              //controller: _titleController,

            ),
          ],
        )
    );
  }

}
onTap: (){
        Navigator.push(context,MaterialPageRoute(builder:(context)=>DetailPage(context,snapshot.data.douments[i])));
      },
class DetailPage extends StatelessWidget {
  DocumentSnapshot detailDocument;
  DetailPage(this.detailDocument);
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(detailDocument.data["Title"]),
      ),
      body: Center(
        child: Text(detailDocument.data["Summary"]),
      ),
    );
  }
}