Dart 在按下按钮时创建新小部件
如何在单击按钮时创建新的小部件?例如,我有以下代码:Dart 在按下按钮时创建新小部件,dart,flutter,Dart,Flutter,如何在单击按钮时创建新的小部件?例如,我有以下代码: child: MaterialButton( child: Padding( padding: const EdgeInsets.symmetric( vertical: 10.0, horizontal: 42.0), child: Text( "LOGIN", style: TextStyle(
child: MaterialButton(
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 10.0, horizontal: 42.0),
child: Text(
"LOGIN",
style: TextStyle(
color: Colors.white,
fontSize: 25.0,
fontFamily: "WorkSansBold"),
),
),
onPressed: () {
var url = 'https://jsonplaceholder.typicode.com/users';
http.get(url).then((response) {
print("Response status: ${response.statusCode}");
print("Response body: ${response.body}");
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => new SecondScreen()),
);
});
},
)
在这里,我想用JSON中的数据创建一个新屏幕。为了简单起见,假设我需要为JSON响应中的所有name
和数字创建新的Text()
小部件。电话簿之类的东西
在本例中,
SecondScreen
小部件应该包含什么?您可以拥有一个列表视图
,它为每个值构建一个文本
小部件
class SecondScreen extends StatelessWidget{
var values;
SecondScreen(this.values);
Widget build(buildcontext context){
return ListView.builder(
itemBuilder: (context, index){
if(index < values.length)
{
return Card(child: Text(values[index]));
}
}
);
}
}
class SecondScreen扩展了无状态小部件{
var值;
第二个屏幕(此.values);
小部件构建(构建上下文){
返回ListView.builder(
itemBuilder:(上下文,索引){
if(索引<值.长度)
{
返回卡(子项:文本(值[索引]);
}
}
);
}
}
您可以拥有一个列表视图
,它为每个值构建一个文本
小部件
class SecondScreen extends StatelessWidget{
var values;
SecondScreen(this.values);
Widget build(buildcontext context){
return ListView.builder(
itemBuilder: (context, index){
if(index < values.length)
{
return Card(child: Text(values[index]));
}
}
);
}
}
class SecondScreen扩展了无状态小部件{
var值;
第二个屏幕(此.values);
小部件构建(构建上下文){
返回ListView.builder(
itemBuilder:(上下文,索引){
if(索引<值.长度)
{
返回卡(子项:文本(值[索引]);
}
}
);
}
}
类似的情况
class SecondScreen extends StatelessWidget {
final String body;
SecondScreen(this.body);
@override
Widget build(BuildContext context) {
List<dynamic> myList = json.decode(body);
return Scaffold(
appBar: AppBar(title: Text('Second Screen')),
body: Container(
child: ListView(
children: myList.map((e)=>Text(e['name'])).toList(),
),
),
);
}
}
差不多
class SecondScreen extends StatelessWidget {
final String body;
SecondScreen(this.body);
@override
Widget build(BuildContext context) {
List<dynamic> myList = json.decode(body);
return Scaffold(
appBar: AppBar(title: Text('Second Screen')),
body: Container(
child: ListView(
children: myList.map((e)=>Text(e['name'])).toList(),
),
),
);
}
}