Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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_Flutter Layout - Fatal编程技术网

Flutter 颤振理解模型

Flutter 颤振理解模型,flutter,flutter-layout,Flutter,Flutter Layout,我只是想问一下,因为这件事让我感到困惑,我仍然是OOP的初学者,我从Java开始,现在在Flatter中使用它,所以基本上当我在Flatter中使用模型时,我是用它从api或web服务器获取数据,对吗?让我们说它就像选择。。从…起在SQL中,是这样吗?例如,这里我有这个位置模型 import./location\u fact.dart'; 类位置{ 最后的字符串名; 最终字符串url; 最后列出事实; 位置({this.name,this.url,this.facts}); } 因此,基本上在

我只是想问一下,因为这件事让我感到困惑,我仍然是OOP的初学者,我从Java开始,现在在Flatter中使用它,所以基本上当我在Flatter中使用模型时,我是用它从api或web服务器获取数据,对吗?让我们说它就像选择。。从…起在SQL中,是这样吗?例如,这里我有这个位置模型

import./location\u fact.dart';
类位置{
最后的字符串名;
最终字符串url;
最后列出事实;
位置({this.name,this.url,this.facts});
}

因此,基本上在
final name
final url
中,我指定从api或web服务器获取哪些数据(在本例中,我只是提供虚假数据,而这些数据是我在没有第三方api或web服务器的情况下手动提供的),所以当我使用这些数据时,我就像使用“apî”中的选择名称、url一样?这就是交易吗?当我使用位置({this.name,this.url,this.facts})时,我是否指定此模型将采用哪些数据作为参数?当我使用final的时候,我是否喜欢引用数据,一旦它被获取,它就不会被再次获取?当我使用
最终列表事实时我是否指定此数据仅从列表中获取事实,还是什么?我知道这很难理解,但我对飞镖和颤振的学习还是比较初级的,我非常感谢大家的帮助。

我觉得你对“模特”这个词的理解太多了。在最初的“MVC”三元组中,有模型(存放数据的地方)、视图(基本上是颤振中的小部件)和控制器(通常埋在颤振中的小部件中,但可以并且应该被拉出来以实现可测试和可重用的逻辑)。这有帮助吗?

首先,如果您从
API
获取数据,它将返回
json
格式的数据,作为
json对象
json列表
API
获取数据后,您可以使用
json
数据,也可以将
json
对象转换为
普通Dart对象

要将
json数据
转换为
Plain Dart对象
,必须指定
模型

下面是一个设计模型类的示例

class Location {
  String name;
  String url;
  List<Facts> facts;

  Location({this.name, this.url, this.facts});

  Location.fromJson(Map<String, dynamic> json) {
    name = json['name'];
    url = json['url'];
    if (json['facts'] != null) {
      facts = new List<Facts>();
      json['facts'].forEach((v) {
        facts.add(new Facts.fromJson(v));
      });
    }
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['name'] = this.name;
    data['url'] = this.url;
    if (this.facts != null) {
      data['facts'] = this.facts.map((v) => v.toJson()).toList();
    }
    return data;
  }
}

class Facts {
  String locationFact;

  Facts({this.locationFact});

  Facts.fromJson(Map<String, dynamic> json) {
    locationFact = json['locationFact'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['locationFact'] = this.locationFact;
    return data;
  }
}
类位置{
字符串名;
字符串url;
列举事实;
位置({this.name,this.url,this.facts});
Location.fromJson(映射json){
name=json['name'];
url=json['url'];
if(json['facts']!=null){
事实=新列表();
json['facts'].forEach((v){
facts.add(newfacts.fromJson(v));
});
}
}
映射到JSON(){
最终地图数据=新地图();
数据['name']=this.name;
数据['url']=this.url;
如果(this.facts!=null){
data['facts']=this.facts.map((v)=>v.toJson()).toList();
}
返回数据;
}
}
阶级事实{
字符串位置事实;
事实({this.locationFact});
Facts.fromJson(映射json){
locationFact=json['locationFact'];
}
映射到JSON(){
最终地图数据=新地图();
数据['locationFact']=this.locationFact;
返回数据;
}
}
这里的
Location.fromJson()
是一个
工厂
方法,用于将
json
对象转换为
普通省道对象

作为参考,你应该浏览一下官方文件

非常感谢,这确实会帮助我度过颤振生涯,但我想问的只是一些简单的问题,我提供的是我创建的虚假数据,我只是想知道模型的功能我知道你的问题。我会在我的回答中做一个更新。谢谢Randal的回复,这确实帮助了我,但我要问的是模型的功能,当它涉及到一个简单的小部件时,它会将数据提取到模拟程序中,对吗?