flutter - Flutter如何传递数组并在其他小部件中显示
问题描述
我有一个数组列表,我需要将它传递给另一个有状态的小部件并在那里显示数组
这是我从 API 检索数据的函数代码
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"]);
}
}
如您所见,有 2 个列表 familyMember["name"] 和 familyMember["gender"] 我需要将其传递给 statefulwidget
我很简单地像这样传递它
Navigator.push(
context,
MaterialPageRoute(builder: (context) => PersonalPage(familyMember["name"], 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 ')
),
);
}
}
长笛
解决方案
试试这个并按照以下方式更改您的代码:由于您的第一页代码丢失,我创建了一个虚拟的 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),
]
)
),
);
}
}
推荐阅读
- eclipse - 在 maven-plugin 开发中使用 eclipse 插件项目
- javascript - 旧代码中的 Typescript 3.5.1“不兼容类型”错误?
- visual-studio-code - 如何在 vscodemarketplace 中更新 Readme.md vscode 扩展?
- c# - 由于 chrome 浏览器版本更新,元素不可交互问题(会话信息:chrome=74.0.3729.157)(驱动程序信息:chromedriver=74.0.3729.6)
- r - R按组进行无监督聚类(?)
- azure-data-factory - 来自 Azure 数据工厂的 REST API 调用
- swift - UISearchBar 不在 TableView 中查找信息
- android - 应用程序不显示数据并在几秒钟后崩溃
- python - 有人可以解释为什么在使用 openpyxl 2.6.2 时会发生这种情况吗?
- xml - 如何检查数组是否为空或为空或它包含 perl 语言中的元素