簡體   English   中英

Flutter:將數據從第一屏發送到第二屏

[英]Flutter: send data from first screen to second screen

我有小問題,我不知道如何解決這個問題。 我正在從數據庫中獲取數據,當我單擊列表時,它正在導航到新屏幕。 我的意思是我想將第一個屏幕上的數據獲取到第二個屏幕。 它沒有給我錯誤,但模擬器給了我這個和下面的代碼:

在此處輸入圖像描述

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(); 給我錯誤,但我不知道這是什么,請幫助我,謝謝。

和我的第一個屏幕:

在此處輸入圖像描述

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])),
),

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM