Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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
dart中JSON调用的返回列表_Dart_Flutter - Fatal编程技术网

dart中JSON调用的返回列表

dart中JSON调用的返回列表,dart,flutter,Dart,Flutter,编辑: 整个省道文件--这是整个省道文件。我不知道如何在ARR声明中调用该方法并返回正确的映射。只需要从http调用生成数组,我们就可以了。这是我们第一次从JSON返回多个记录并对其进行迭代 import 'package:flutter/material.dart'; import 'package:lightbridge_mobile/screens/forum/assets/colors.dart'; import 'package:font_awesome_flutter/font

编辑:

整个省道文件--这是整个省道文件。我不知道如何在ARR声明中调用该方法并返回正确的映射。只需要从http调用生成数组,我们就可以了。这是我们第一次从JSON返回多个记录并对其进行迭代

  import 'package:flutter/material.dart';
 import 'package:lightbridge_mobile/screens/forum/assets/colors.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:lightbridge_mobile/screens/forum/assets/app_bar_forum.dart';
import 'package:lightbridge_mobile/models/forum_answers.dart';
 import 'dart:async';
import 'dart:convert';
import 'package:http/http.dart' as http;

 class ForumDetailPage extends StatefulWidget {
 @override
 _ForumDetailPageState createState() => new _ForumDetailPageState();
}

 class _ForumDetailPageState extends State<ForumDetailPage> {
  @override
 Widget build(BuildContext context) {
var questionSection = new Padding(
  padding: const EdgeInsets.all(8.0),
  child: new Column(
    children: <Widget>[
      new Text(
        // Post Title
        "How do I become a expert in programming as well as design ??",
        textScaleFactor: 1.5,
        style: new TextStyle(fontWeight: FontWeight.bold, fontSize: 15.0 ),
      ),
      new Padding(
        padding: const EdgeInsets.all(10.0),
        child: new Row(
          mainAxisAlignment: MainAxisAlignment.spaceAround,
          children: <Widget>[
            new IconWithText(Icons.laptop_windows, "Technology", iconColor: Colors.grey),
            new IconWithText(
              Icons.question_answer,
              "Answered",
              iconColor: Colors.grey,
            ),
            new IconWithText(Icons.remove_red_eye, "54", iconColor: Colors.grey)
          ],
        ),
      ),
      new Divider( height: 1.0)
    ],
  ),
);

var responses = new Container(
  padding: const EdgeInsets.all(8.0),

  child: new ListView.builder(
    itemBuilder: (BuildContext context, int index) => new ForumPost(ForumPostArr[index]),
    itemCount: ForumPostArr.length,
  )
);

return new Scaffold(
   appBar : LBForumAppBar().getAppBar(),
  body: new Column(
    children: <Widget>[
      questionSection,
      new Expanded(
          child: new Padding(
        padding: const EdgeInsets.only(bottom: 20.0),
        child: responses,
      ))
    ],
  ),
);
 }
}

var ForumPostArr =  [
 new ForumPostEntry("User1", "2 Days ago", 0 , 0 , "Hello,\n\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."),
 new ForumPostEntry("User2", "23 Hours ago", 1 , 0 , "Pellentesque justo metus, finibus porttitor consequat vitae, tincidunt vitae quam. Vestibulum molestie sem diam. Nullam pretium semper tempus. Maecenas lobortis lacus nunc, id lacinia nunc imperdiet tempor. Mauris mi ipsum, finibus consectetur eleifend a, maximus eget lorem. Praesent a magna nibh. In congue sapien sed velit mattis sodales. Nam tempus pulvinar metus, in gravida elit tincidunt in. Curabitur sed sapien commodo, fringilla tortor eu, accumsan est. Proin tincidunt convallis dolor, a faucibus sapien auctor sodales. Duis vitae dapibus metus. Nulla sit amet porta ipsum, posuere tempor tortor.\n\nCurabitur mauris dolor, cursus et mi id, mattis sagittis velit. Duis eleifend mi et ante aliquam elementum. Ut feugiat diam enim, at placerat elit semper vitae. Phasellus vulputate quis ex eu dictum. Cras sapien magna, faucibus at lacus vel, faucibus viverra lorem. Phasellus quis dui tristique, ultricies velit non, cursus lectus. Suspendisse neque nisl, vestibulum non dui in, vulputate placerat elit. Sed at convallis mauris, eu blandit dolor. Vivamus suscipit iaculis erat eu condimentum. Aliquam erat volutpat. Curabitur posuere commodo arcu vel consectetur."),
  new ForumPostEntry("User3", "2 Days ago", 5 , 0 , "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."),
   new ForumPostEntry("User4", "2 Days ago", 0 , 0 , "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."),

  ];




  Future<List<ForumAnswers>> getForumAnswers(String postID) async {

  final response =
     await http.post('http://api/ForumAnswers',
     headers: {"Content-Type": "application/json", 
             'Accept': 'application/json',},
     body: json.encode({'PostID' : postID }));  

 if (response.statusCode == 200) {
// If the call to the server was successful, parse the JSON

 List l = json.decode(response.body);
   List<ForumAnswers> posts = l.map((m) => ForumAnswers.fromJson(m)).toList(); 


  return posts;

} else {
// If that call was not successful, throw an error.
throw Exception('Failed to load user');
 }

  }


class ForumPostEntry{
  final String username;
  final String hours;
  final int likes;
  final int dislikes;
  final String text;

     ForumPostEntry(this.username, this.hours, this.likes, this.dislikes, this.text);
}

class ForumPost extends StatelessWidget {
  final ForumPostEntry entry;

  ForumPost(this.entry);

  @override
 Widget build(BuildContext context) {
   return new Container(
    margin: const EdgeInsets.only(bottom: 10.0),
    decoration: new BoxDecoration(
      color: Colors.grey,
      borderRadius: const BorderRadius.all(const Radius.circular(20.0)),
     ),
    child: new Column(
      children: <Widget>[
      new Container(
        decoration: new BoxDecoration(
          color: Colors.grey[600],
          borderRadius: const BorderRadius.only(
              topLeft: const Radius.circular(20.0),
              topRight: const Radius.circular(20.0)),
        ),
        child: new Row(
          children: <Widget>[
            new Icon(
              Icons.person,
              size: 50.0,
              color: Colors.white
            ),
            new Expanded(
              child: new Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  new Text(
                    entry.username
                  ),
                  new Text(
                    entry.hours
                  ),
                ],
              ),
            ),
            new Row(
              children: <Widget>[
                new Padding(
                  padding: const EdgeInsets.all(2.0),
                  child: new Icon(Icons.thumb_up, color: Colors.white),
                ),
                new Padding(
                  padding: const EdgeInsets.all(2.0),
                  child: new Text(entry.likes.toString()),
                ),
                new Padding(
                  padding: const EdgeInsets.all(2.0),
                  child: new Icon(Icons.thumb_down, color: Colors.white),
                ),
                new Padding(
                  padding: const EdgeInsets.only(right: 8.0, left: 2.0),
                  child: new Text(entry.dislikes.toString()),
                ),
              ],
            )
          ],
        ),
      ),
      new Container(
        margin: const EdgeInsets.only(left: 2.0,right: 2.0,bottom: 2.0),
        padding: const EdgeInsets.all(8.0),
        decoration: new BoxDecoration(
          color: Colors.grey[200],
          borderRadius: const BorderRadius.only(bottomLeft :const Radius.circular(20.0),bottomRight :const Radius.circular(20.0))
        ),
        child: new Text(entry.text),
      ),
    ],
    ),
   );
}
 }

  class IconWithText extends StatelessWidget {
 final IconData iconData;
 final String text;
 final Color iconColor;

  IconWithText(this.iconData, this.text, {this.iconColor});
  @override
 Widget build(BuildContext context) {
   return new Container(
    child: new Row(
      children: <Widget>[
        new Icon(
        this.iconData,
        color: this.iconColor,
      ),
      new Padding(
        padding: const EdgeInsets.only(left: 8.0),
        child: new Text(this.text),
      ),
       ],
  ),
    );
 }
 }
导入“包装:颤振/材料.省道”;
导入“包:lightbridge_mobile/screens/forum/assets/colors.dart”;
导入“package:font_awesome_flatter/font_awesome_flatter.dart”;
导入“包:lightbridge_mobile/screens/forum/assets/app_bar_forum.dart”;
导入“软件包:lightbridge_mobile/models/forum_answers.dart”;
导入“dart:async”;
导入“dart:convert”;
将“package:http/http.dart”导入为http;
类ForumDetailPage扩展StatefulWidget{
@凌驾
_ForumDetailPageState createState()=>新建_ForumDetailPageState();
}
类_ForumDetailPageState扩展状态{
@凌驾
小部件构建(构建上下文){
var questionSection=新填充(
填充:常数边集全部(8.0),
子:新列(
儿童:[
新文本(
//职称
“我如何成为编程和设计方面的专家??”,
textScaleFactor:1.5,
样式:新的文本样式(fontWeight:fontWeight.bold,fontSize:15.0),
),
新填料(
填充:常数边集全部(10.0),
孩子:新的一排(
mainAxisAlignment:mainAxisAlignment.spaceAround,
儿童:[
新图标WithText(Icons.laptop_windows,“技术”,iconColor:Colors.grey),
新IconWithText(
问题(1)答案:,
“回答”,
iconColor:颜色。灰色,
),
新图标带文字(图标。移除红色眼睛,“54”,图标颜色:颜色。灰色)
],
),
),
新隔板(高度:1.0)
],
),
);
var响应=新容器(
填充:常数边集全部(8.0),
子项:新建ListView.builder(
itemBuilder:(BuildContext上下文,int index)=>newforumpost(ForumPostArr[index]),
itemCount:ForumPostArr.length,
)
);
归还新脚手架(
appBar:LBForumAppBar().getAppBar(),
正文:新栏目(
儿童:[
问题组,
新扩展(
孩子:新的填充物(
填充:仅限常量边集(底部:20.0),
儿童:答复,
))
],
),
);
}
}
var ForumPostArr=[
新ForumPostEntry(“用户1”、“2天前”、0、0、,"您好,\n\n我的同僚们,我是一位杰出的献身者,我是一名临时雇员,我是一名工人,我是一名小职员,我是一名实习工人,我是一名普通消费者,我是一名临时雇员,我是一名临时雇员,我是一名临时雇员,我是一名临时雇员如果你是一个不轻率的人,就必须为自己的行为负责。”),
新ForumPostEntry(“用户2”,“23小时前”,1,0,”这是一个很好的例子,因为它是一个非常好的例子pus pulvinar metus,在孕期精英tincidunt in.Curabitur sed sapien commodo,fringilla tortor eu,accumsan est.Proin tincidunt convallis dolor,一位苏打水拍卖商。Duis vitae dapibus metus.不在同侧门,属于临时侵权人。\n\n毛里斯·多洛,我在同侧,马蒂斯sagittis velit.我在同侧这是一个基本要素,是一个封建时代,是一个充满活力的地方,是一个充满活力的地方,是一个充满活力的地方,是一个充满活力的地方,是一个充满活力的地方,是一个充满活力的地方,是一个充满活力的地方,是一个充满活力的地方这是一种很好的调味品,是一种很好的调味品,是一种很好的调味品,
新ForumPostEntry(“用户3”,“2天前”,5,0,”知识本身是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德如果你不轻率,就必须为自己的行为负责。”),
新ForumPostEntry(“用户4”,“2天前”,0,0,”知识本身是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德如果你不轻率,就必须为自己的行为负责。”),
];
未来GetForumAnwers(字符串postID)异步{
最后答复=
等待http.post('http://api/ForumAnswers',
标题:{“内容类型”:“应用程序/json”,
'Accept':'application/json',},
body:json.encode({'PostID':PostID}));
如果(response.statusCode==200){
//如果对服务器的调用成功,则解析JSON
List l=json.decode(response.body);
List posts=l.map((m)=>ForumAnswers.fromJson(m)).toList();
返回岗位;
}否则{
//如果该调用未成功,则抛出一个错误。
抛出异常(“加载用户失败”);
}
}
公开课{
最终字符串用户名;
最后串小时;
最终的int-likes;
不喜欢的东西;
最终字符串文本;
ForumPostEntry(this.username、this.hours、this.likes、this.dislikes、this.text);
}
用于UMPOST扩展的类
  content: parsedjson['content'],
  username: parsedjson['username'],
  createDate : parsedjson['createDate'],
  upvote : parsedjson['upvote'],

);
 List l = json.decode(response.body);
 List<ForumAnswers> posts = l.map((m) => ForumAnswers.fromJson(m)).toList();