Flutter 颤振如何通过数组并在其他小部件中显示
我有一个数组列表,我需要将它传递给另一个有状态小部件并在那里显示数组 这是我从API检索数据的函数代码Flutter 颤振如何通过数组并在其他小部件中显示,flutter,dart,Flutter,Dart,我有一个数组列表,我需要将它传递给另一个有状态小部件并在那里显示数组 这是我从API检索数据的函数代码 Future<List> doSomeAsyncStuff() async { final storage = new FlutterSecureStorage(); String value = await storage.read(key: 'Cnic'); print(value); String url = 'http://api.ph
Future<List> doSomeAsyncStuff() async {
final storage = new FlutterSecureStorage();
String value = await storage.read(key: 'Cnic');
print(value);
String url = 'http://api.php?offset=0&limit=1&cnic=${value}' ;
final msg = jsonEncode({"cnic": value});
Map<String,String> headers = {'Content-Type':'application/json'};
String token = value;
final response = await http.get(url);
var Data = json.decode(response.body);
print(Data);
var familyMembers = Data["records"][0]["family_members"];
print(familyMembers);
for (var familyMember in familyMembers){ //prints the name of each family member
print(familyMember["name"]);
print(familyMember["gender"]);
}
}
这是我的另一个有状态小部件,我需要在这里显示名称和性别的数组
import 'package:flutter/material.dart';
class PersonalPage extends StatefulWidget {
final String name;
final String gender;
PersonalPage(this.name, this.gender);
@override
_PersonalPageState createState() => _PersonalPageState();
}
class _PersonalPageState extends State<PersonalPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text('I need to print name and gender here ')
),
);
}
}
导入“包装:颤振/材料.省道”;
类PersonalPage扩展StatefulWidget{
最后的字符串名;
最终字符串性别;
个人页面(this.name,this.gender);
@凌驾
_PersonalPageState createState()=>\u PersonalPageState();
}
类_PersonalPageState扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:中(
孩子:文本('我需要在这里打印姓名和性别')
),
);
}
}
弗鲁特
或
尝试此操作,并根据以下内容更改代码:由于缺少第一页代码,我已创建了一个虚拟forst页
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
title: 'My APP',
home: FirstRoute(),
));
}
class FirstRoute extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('List of ....'),
),
body: Center(
child: RaisedButton(
child: Text('Open details'),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => PersonalPage("NAME","GENDER")),
);
},
),
),
);
}
}
class PersonalPage extends StatefulWidget {
final String name;
final String gender;
PersonalPage(this.name, this.gender);
@override
_PersonalPageState createState() => _PersonalPageState();
}
class _PersonalPageState extends State<PersonalPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Row(
children : [
Text(widget.name),
Text(widget.gender),
]
)
),
);
}
}
导入“包装:颤振/材料.省道”;
void main(){
runApp(材料应用程序)(
标题:“我的应用程序”,
主页:FirstRoute(),
));
}
类FirstRoute扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“……列表”),
),
正文:中(
孩子:升起按钮(
子项:文本(“打开的详细信息”),
已按下:(){
导航器。推(
上下文
MaterialPageRoute(生成器:(上下文)=>PersonalPage(“姓名”、“性别”),
);
},
),
),
);
}
}
类PersonalPage扩展StatefulWidget{
最后的字符串名;
最终字符串性别;
个人页面(this.name,this.gender);
@凌驾
_PersonalPageState createState()=>\u PersonalPageState();
}
类_PersonalPageState扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:中(
孩子:排(
儿童:[
文本(widget.name),
文本(widget.gender),
]
)
),
);
}
}
您做错了,您正在传递列表,在有状态小部件中,您提到它是一个字符串,您可以这样做
Navigator.push(
context,
MaterialPageRoute(builder: (context) => PersonalPage(familyMember["name"], familyMember["gender"])),
);
List<String> familyMemberName = [];
List<String> familyMemberGender = [];
Future<List> doSomeAsyncStuff() async {
final storage = new FlutterSecureStorage();
String value = await storage.read(key: 'Cnic');
print(value);
String url = 'http://api.php' ;
final msg = jsonEncode({"cnic": value});
Map<String,String> headers = {'Content-Type':'application/json'};
String token = value;
final response = await http.get(url);
var Data = json.decode(response.body);
print(Data);
var familyMembers = Data["records"][0]["family_members"];
print(familyMembers);
for (var familyMember in familyMembers){
familyMemberName.add(familyMember["name"]);
familyMemberGender.add(familyMember["gender"]);
print(familyMemberName);
}
}
import "package:flutter/material.dart";
class PersonalPage extends StatefulWidget {
final List<String> names;
final List<String> relation;
PersonalPage(this.names,this.relation);
@override
_PersonalPageState createState() => _PersonalPageState();
}
class _PersonalPageState extends State<PersonalPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body:
ListView.builder( //use ListView here to show all the names and genders
itemCount: widget.names.length,
itemBuilder: (BuildContext context,int index){
return Padding(
padding: EdgeInsets.only(left: 10, right: 10, bottom: 10, top: 10),
child: Card(
child: Padding(
padding: EdgeInsets.all(5),
child: Column(
children: <Widget>[
Row(
children: <Widget>[
Text('Name:', style: TextStyle(color: Colors.blue, fontWeight: FontWeight.bold),),
Text(widget.names[index])
],
),
Row(
children: <Widget>[
Text('Gender:', style: TextStyle(color: Colors.blue, fontWeight: FontWeight.bold),),
Text(widget.genders[index])
],
),
],
),
),
),
);
})
);
}
}
List familyMemberName=[];
列表familyMemberGender=[];
Future doSomeAsyncStuff()异步{
最终存储=新存储();
字符串值=wait storage.read(键:“Cnic”);
印刷品(价值);
字符串url='0http://api.php' ;
最终msg=jsonEncode({“cnic”:value});
映射头={'Content-Type':'application/json'};
字符串标记=值;
最终响应=等待http.get(url);
var Data=json.decode(response.body);
打印(数据);
var familyMembers=数据[“记录”][0][“家庭成员”];
打印(家庭成员);
对于(var familyMember in familyMember){
添加(familyMember[“name”]);
添加(familyMember[“性别]);
打印(家庭成员名称);
}
}
在你的个人小部件里,就像这样
Navigator.push(
context,
MaterialPageRoute(builder: (context) => PersonalPage(familyMember["name"], familyMember["gender"])),
);
List<String> familyMemberName = [];
List<String> familyMemberGender = [];
Future<List> doSomeAsyncStuff() async {
final storage = new FlutterSecureStorage();
String value = await storage.read(key: 'Cnic');
print(value);
String url = 'http://api.php' ;
final msg = jsonEncode({"cnic": value});
Map<String,String> headers = {'Content-Type':'application/json'};
String token = value;
final response = await http.get(url);
var Data = json.decode(response.body);
print(Data);
var familyMembers = Data["records"][0]["family_members"];
print(familyMembers);
for (var familyMember in familyMembers){
familyMemberName.add(familyMember["name"]);
familyMemberGender.add(familyMember["gender"]);
print(familyMemberName);
}
}
import "package:flutter/material.dart";
class PersonalPage extends StatefulWidget {
final List<String> names;
final List<String> relation;
PersonalPage(this.names,this.relation);
@override
_PersonalPageState createState() => _PersonalPageState();
}
class _PersonalPageState extends State<PersonalPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body:
ListView.builder( //use ListView here to show all the names and genders
itemCount: widget.names.length,
itemBuilder: (BuildContext context,int index){
return Padding(
padding: EdgeInsets.only(left: 10, right: 10, bottom: 10, top: 10),
child: Card(
child: Padding(
padding: EdgeInsets.all(5),
child: Column(
children: <Widget>[
Row(
children: <Widget>[
Text('Name:', style: TextStyle(color: Colors.blue, fontWeight: FontWeight.bold),),
Text(widget.names[index])
],
),
Row(
children: <Widget>[
Text('Gender:', style: TextStyle(color: Colors.blue, fontWeight: FontWeight.bold),),
Text(widget.genders[index])
],
),
],
),
),
),
);
})
);
}
}
导入“包装:颤振/材料.省道”;
类PersonalPage扩展StatefulWidget{
最后名单名称;
最终列表关系;
个人页面(此.名称,此.关系);
@凌驾
_PersonalPageState createState()=>\u PersonalPageState();
}
类_PersonalPageState扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:
builder(//在此处使用ListView显示所有姓名和性别
itemCount:widget.names.length,
itemBuilder:(构建上下文,int索引){
返回填充(
填充:仅限边集(左:10,右:10,底部:10,顶部:10),
孩子:卡片(
孩子:填充(
填充:边缘设置。全部(5),
子:列(
儿童:[
划船(
儿童:[
Text('名称:',样式:TextStyle(颜色:Colors.blue,fontwweight:fontwweight.bold),
文本(widget.names[索引])
],
),
划船(
儿童:[
Text('性别:',样式:TextStyle(颜色:Colors.blue,fontwweight:fontwweight.bold),
文本(widget.genders[索引])
],
),
],
),
),
),
);
})
);
}
}
很抱歉,我测试了代码,因此我将其添加到卡中我尝试这样做,但当我传递代码时,会显示此错误方法“[]”被调用为null。接收者:null尝试调用:[”(“名称”)alsi我隐藏api请将其从应答中删除谢谢:)我这样尝试,但在传递时显示此错误方法“[]”是在null上调用的。接收方:null尝试呼叫:[](“名称”)