Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Error: Too many positional arguments: 1 allowed, but 2 found

I’m working on a flutter app that is getting a JSON from an API, then I’m parsing the JSON and building a List Tile, when I try to run the code, I’m getting this error.

lib/screens/screen4.dart:112:23: Error: Too many positional arguments: 1 allowed, but 2 found.
Try removing the extra positional arguments.
          return _tile(data[index].ssid,data[index].auth,icon: Icons.wifi);     

This is my code:

import 'dart:async';
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;

void main() {
  runApp(
    JobsListView(),
  );
}

class Job {
  final String ssid;
  final String auth;
  final String encry;

  Job({required this.ssid, required this.auth, required this.encry});

  factory Job.fromJson(Map<String, dynamic> json) {
    return Job(
      ssid: json['ssid'],
      auth: json['auth'],
      encry: json['encry'],
    );
  }
}

class JobsListView extends StatelessWidget {
  const JobsListView({Key? key}) : super(key: key);

  Future<List<Job>> _fetchJobs() async {
    final response = await http.get(
        Uri.parse('http://10.10.10.254/httpapi.asp?command=wlanGetApListEx'));

    if (response.statusCode == 200) {
      final List jsonResponse = json.decode(response.body)['aplist'] as List;
      return jsonResponse.map((job) => new Job.fromJson(job)).toList();
    } else {
      throw Exception('Failed to load jobs from API');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Finding your available networks',
            style: TextStyle(color: Colors.black87)),
        titleSpacing: 00.0,
        centerTitle: true,
        toolbarHeight: 60.2,
        toolbarOpacity: 0.6,
        shape: const RoundedRectangleBorder(
          borderRadius: BorderRadius.only(
              bottomRight: Radius.circular(25),
              bottomLeft: Radius.circular(25)),
        ),
        elevation: 0.00,
        backgroundColor: Colors.transparent,
      ),
      body: SafeArea(
        child: Column(
          children: <Widget>[
            Expanded(
              child: FutureBuilder<List<Job>>(
                future: _fetchJobs(),
                builder: (context, snapshot) {
                  if (snapshot.hasData) {
                    List<Job> data = snapshot.data ?? [];
                    return _jobsListView(data);
                  } else if (snapshot.hasError) {
                    return Text("${snapshot.error}");
                  }
                  return Container(
                    alignment: Alignment.topCenter,
                    margin: EdgeInsets.only(top: 400),
                    child: CircularProgressIndicator(
                      backgroundColor: Colors.grey,
                      color: Colors.black,
                    ),
                  );
                },
              ),
            ),
          ],
        ),
      ),
    );
  }

  ListView _jobsListView(data) {
    return ListView.builder(
        itemCount: data.length,
        itemBuilder: (context, index) {
          return _tile(data[index].ssid, data[index].auth, icon: Icons.wifi);
        });
  }

  ListTile _tile(BuildContext context,
          {required String title,
          required String subtitle,
          required IconData icon}) =>
      ListTile(
        title: Text(title,
            style: TextStyle(
              fontWeight: FontWeight.w500,
              fontSize: 20,
            )),
        subtitle: Text(subtitle),
        leading: Icon(
          icon,
          color: Colors.grey[500],
        ),
        trailing: Icon(
          Icons.arrow_forward_ios,
        ),
        onTap: () {
          Navigator.pushNamed(context, '/fifth');
        },

        //Navigator.pushNamed(context, '/fifth'),

        // => print('on tap'),
        //TO DO: Pass the arguments selected to the next screen, and insert it into the URI
        //TO DO:Hex to ASCII.
      );
}

My intention is to construct the ListTile and then navigate from each Tile to another screen, can anybody help me to check what is wrong on this code?

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

You are using one positional parameter, and 4 required name parameter.

tTile _tile(BuildContext context,
          {required String title,
          required String subtitle,
          required IconData icon}) =>

You need to pass data like

return _tile(
        context,
        subtitle:data[index].ssid,
        title: data[index].auth,
        icon: Icons.wifi,
      );

More about using using-constructors

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading