I am trying to pass multiple arguments to a named route. I have tried multiple things but have not succeeded so far. Can anyone tell me how to achieve this?
routes.dart
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:brandcare/views/pdf_view.dart';
import 'package:brandcare/views/reports_view.dart';
class RouteGenerator {
static Route<dynamic> generateRoute(RouteSettings settings) {
final args = settings.arguments;
switch (settings.name) {
case 'reports':
return CupertinoPageRoute(builder: (BuildContext context) => ReportsView());
case 'pdf':
return CupertinoPageRoute(builder: (BuildContext context) => PDFView());
default:
return CupertinoPageRoute(builder: (BuildContext context) => DashboardView());
}
}
}
Ontap event on a listitem in reports_view.dart
onTap: () {
Navigator.pushNamed(
context, 'pdf',
arguments: PDFView(
reportTitle: 'January Report',
reportFullPath: 'https://static.example.com/reports/123456.pdf'
)
);
},
The page where I want to access multiple arguments
pdf_view.dart
class PDFView extends StatefulWidget {
final String reportTitle;
final String reportFullPath;
PDFView({
Key key,
this.reportTitle,
this.reportFullPath,
}) : super(key: key);
@override
_PDFViewState createState() => _PDFViewState();
}
class _PDFViewState extends State<PDFView> {
String title = this.widget.reporTitle;
String url = this.widget.reportFullPath;
}