'Flutter 1 positional argument expected, but 0 found

I have created a page with a side drawer which when pressed on the magnifying glass icon opens search requirements for different recipes e.g vegetarian, gluten free etc. I want the recipes to be shown on the page once the side drawer is closed.

I have created a widget called RecipeList() which has all of the code to retrieve the recipes from API and works perfectly on its own page without a side drawer. I wish to call this RecipeList() widget so that when the side drawer is closed they are displayed.

I'm having an error on the 7th line from the bottom, calling the RecipeList() widget it says "1 positional argument(s) expected, but 0 found.Try adding the missing arguments." I feel like I'm missing something that may be pretty obvious to fresh eyes?

Please see this images as references in case I didn't explain it well enough :)

HOW I WISH FOR THE RECIPES TO BE DISPLAYED WHEN THE SIDE BAR IS CLOSED (THIS WORKS ON A PAGE WITHOUT THE SIDE BAR):

CURRENTLY HOW THE SIDE BAR OPENS:

THE PAGE I WISH FOR THE RECIPES TO BE DISPLAYED ON:

//SIDE DRAWER BUILD
  Widget build (BuildContext context) {
    return Scaffold(
      extendBodyBehindAppBar: true,
      body: SwipeDrawer(
        radius: 20,
        key: drawerKey,
        hasClone: false,
        bodyBackgroundPeekSize: 30,
        backgroundColor: Colors.white,
        drawer: buildDrawer(),
        child: buildBody(),
      ),
    );
  }

//WIDGET RESPONSIBLE FOR SHOWING RECIPES FROM API
  Widget RecipeList(BuildContext context) {
  return Scaffold(
    body:
    mapResponse==null?Container(): SingleChildScrollView(
      child:Column(
      children: <Widget> [
      ListView.builder(
        //SHRINKWRAP ADJUSTS THE BOXES TO FIT THE SCREEN
        shrinkWrap: true,
        itemBuilder: (context,index){
        return Container(
          
        //RECIPE PAGE LAYOUT DESIGN
        //EACH RECIPE IS SHOWN WITH ITS TITLE & CALORIES IN A LITTLE RECTANGLE WITH IMAGE 
        //SETTING UP EACH RECIPE RECTANGLE PLACE HOLDER
          margin: EdgeInsets.symmetric(horizontal: 22, vertical: 10),
          width: MediaQuery.of(context).size.width,
          height: 180,
          decoration: BoxDecoration(
          color: Colors.black,
          borderRadius: BorderRadius.circular(15),
          boxShadow: [
            BoxShadow(
              color: Colors.black.withOpacity(0.6),
              offset: Offset(0.0,10.0,),
              blurRadius: 10.0,
              spreadRadius: -6.0,
            ),
          ],
          //EACH RECIPES IMAGE GOES HERE
          image: DecorationImage(
            colorFilter: ColorFilter.mode(
             Colors.black.withOpacity(0.35),
             BlendMode.multiply,
            ),
            //IMAGE IS FETCHED FROM API
            image: NetworkImage(listOfResults[index]['image']),
            fit: BoxFit.cover,
          ),),

          //EACH RECIPES TITLE IS HERE
          child: Stack(
           children: [
           Align(
            child: Padding(
              padding: EdgeInsets.symmetric(horizontal: 5.0),
              child: Text(
                //TITLE IS FETCHED FROM API
                listOfResults[index]['title'],
                style: TextStyle(
                  fontSize: 19,
                  color: Colors.white.withOpacity(1.0)
                ),
                overflow: TextOverflow.ellipsis,
                maxLines: 2,
                textAlign: TextAlign.center,
              ),
            ),
            alignment: Alignment.center,
          ),

          
          //EACH RECIPES CALORIES IS HERE
          Align(
            child: Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                Container(
                  padding: EdgeInsets.all(5),
                  margin: EdgeInsets.all(10),
                  decoration: BoxDecoration(
                    color: Colors.black.withOpacity(0.4),
                    borderRadius: BorderRadius.circular(15),
                  ),
                  child: Row(
                    crossAxisAlignment: CrossAxisAlignment.center,
                    mainAxisSize: MainAxisSize.max,
                    mainAxisAlignment: MainAxisAlignment.end,
                    children: [
                      Icon(Icons.star,color: Colors.yellow,size: 18),
                      SizedBox(width: 7),
                      Text(
                           //CALORIES IS FETCHED FROM API
                            listOfResults[index]['spoonacularScore'].toString(),
                            style: TextStyle(
                            color: Colors.white.withOpacity(1.0)),
                      ),
                    ],
                  ),
                ),
                Container(
                  padding: EdgeInsets.all(5),
                  margin: EdgeInsets.all(10),
                  decoration: BoxDecoration(
                    color: Colors.black.withOpacity(0.4),
                    borderRadius: BorderRadius.circular(15),
                  ),
                  child: Row(
                    children: [
                      Icon(
                        Icons.schedule,
                        color: Colors.yellow,
                        size: 18,
                      ),
                      SizedBox(width: 7),
                      Text(listOfResults[index]['readyInMinutes'].toString(),
                      style: TextStyle(
                      color: Colors.white.withOpacity(1.0)),),
                    ],
                  ),
                )
              ],
            ),
            alignment: Alignment.bottomLeft,
          )]
         ) );
      },
      //IF THE LIST OF RESULTS RETRIEVED FROM API IS NONE, ITEMCOUNT IS EQUAL TO 0. OTHERWISE ITEMCOUNT IS EQUAL TO LENGTH OF THE LIST OF RESULTS
      itemCount: listOfResults==null ? 0 : listOfResults.length)
    ],
  ),
  ));
 }


  //DISPLAY RECIPES ON PAGE SCREEN FROM API SEARCH
   Widget buildBody() {
    return Column(
      children: [
        // build your appBar
        AppBar(
          title: Text('Recipes'),
          leading: InkWell(
              onTap: () {
                if (drawerKey.currentState.isOpened()) {
                  drawerKey.currentState.closeDrawer();
                } else {
                  drawerKey.currentState.openDrawer();
                }
              },
              child: Icon(Icons.search)),
        ),
       
       //MAIN SCREEN
        Expanded(
          child: Container(
            color: Colors.white,
              child: RecipeList(),
            ),
          ),
      ],
    );
  } 
}


Solution 1:[1]

The error explanation is that you defined RecipeList like this:

Widget RecipeList(BuildContext context)

And you call constructor like this:

child: RecipeList(),

As you pass no parameter you got this error, you need to suppress positionnali parameter in Widget définition or pass parameter when you instanciate Widget.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Alaindeseine