颤动:将数据从第一屏幕发送到第二屏幕

时间:2020-07-08 11:41:35

标签: database flutter dart fetch

我没什么问题,我不知道该如何解决。我正在从数据库中获取数据,当我单击列表时,它正在导航到新屏幕。我的意思是我想获取第一个屏幕到第二个屏幕上的数据。它并没有给我错误,但是模拟器为我提供了以下代码:

enter image description here

class ServisIhaleEkran extends StatelessWidget {
  final url = 'https://escar.com/cek.php';

  Future<List<dynamic>> getIhaleData() async {
    var response = await http.get(url);
    return json.decode(response.body);
  }

  String _brand(dynamic user) {
    return user['marka'];
  }

  String _model(dynamic user) {
    return user['model'];
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: FutureBuilder<List<dynamic>>(
        future: getIhaleData(),
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            return ListView.builder(
              itemCount: snapshot.data.length,
              itemBuilder: (context, index) {
                return Card(
                  child: Column(
                    children: <Widget>[
                      ListTile(
                        title: Text(
                          _brand(
                            snapshot.data[index],
                          ).toString(),
                        ),
                        onTap: () => _sendDataToSecondScreen(context),
                      ),
                    ],
                  ),
                );
              },
            );
          } else {
            return Center(child: Text('Error'));
          }
        },
      ),
    );
  }

  void _sendDataToSecondScreen(BuildContext context) {
    String brandSend = _brand.toString();
    Navigator.push(
        context,
        MaterialPageRoute(
          builder: (context) => Details(brand: brandSend),
        ));
  }
}

class Details extends StatelessWidget {
  final String brand;

  Details({this.brand});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(),
        body: Center(
          child: Text(brand),
        ));
  }
}

第一个屏幕:ServisIhaleEkran 第二个屏幕:详细信息

我认为,问题出在这里

  void _sendDataToSecondScreen(BuildContext context) {
    String brandSend = _brand.toString();
    Navigator.push(
        context,
        MaterialPageRoute(
          builder: (context) => Details(brand: brandSend),
        ));
  }
}

可能是string brandSend = _brand.toString();给我一个错误,但我不知道这是什么,请帮助我,谢谢。

和我的第一个屏幕:

enter image description here

1 个答案:

答案 0 :(得分:2)

Rasat如下更改代码:

void _sendDataToSecondScreen(BuildContext context, String brandSend) {
    //String brandSend = _brand.toString();
    Navigator.push(
        context,
        MaterialPageRoute(
          builder: (context) => Details(brand: brandSend),
        ));
  }

并在您的小部件中将其用作:

ListTile(
    title: Text(
    _brand(
        snapshot.data[index],
     ).toString(),
    ),
     onTap: () => _sendDataToSecondScreen(context, _brand(snapshot.data[index])),
),