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(),
        ),
      ),
    );
  }
}