It'sPhil
It'sPhil

Reputation: 117

how to pass multiple data to another screen flutter

I already have a method to pass data. It can only pass one argument, but I want it to pass at least two arguments. How can I do that?

screen1

GestureDetector(
    onTap: () => Navigator.of(context).push(PageTransition(settings: RouteSettings(
   arguments:imageUrl,),type: PageTransitionType.fade,
   child: const ShowPictureScreen())),

Receive on Screen2

@override
  Widget build(BuildContext context) {
    final data = ModalRoute.of(context)!.settings;
    late String photoUrl;
    if (data.arguments == null) {
      photoUrl = "empty";
    } else {
      photoUrl = data.arguments as String;
    }

...

Text('photoUrl')

Upvotes: 0

Views: 566

Answers (2)

K K Muhammed Fazil
K K Muhammed Fazil

Reputation: 713

You can pass argements through Map

arguments: {
  "imageUrl": imageUrl,
  "name": name,
  "email": email
}

and you can receive like this

final data = ModalRoute.of(context)!.settings.arguments as Map;
String photoUrl = data["imageUrl"];

Upvotes: 0

Udit
Udit

Reputation: 79

you can pass multiple data using the following code

// screen1.dart
..
Expanded(
  child: RaisedButton(
    onPressed: () {
      Navigator.push(context,
        MaterialPageRoute(
          builder: (context) => new Screen2(name: thing.name, email: thing.email, address: thing.address, etc..),
        ),
      );
    },
  ),
),
..


// screen2.dart

class Screen2 extends StatefulWidget{
 Screen2({this.name, this.email, this.address, etc..});
  final String name;
  final String email;
  final String address;
  // etc
  @override
  State<StatefulWidget> createState() { return new Screen2State();}
}

class Screen2State extends State<Screen2> {
  Widget build(BuildContext context) {
    return new WillPopScope(
      ..
      child: Scaffold(
        ..
        new Row(
          children: <Widget>[
            new Text(widget.name),
            new Text(widget.email),
            new Text(widget.address),
            etc..
          ],
        ),
      )
    )
}

Upvotes: 1

Related Questions