selfteaching/How-To-Ask-Questions-The-Smart-Way

error in flutter http request

jabarmajidi opened this issue · 0 comments

I am trying to send http request in Flutter and show the result in my app. But I have an error.
this is my code:

  import 'dart:convert';
  import 'package:requests/home_page_free.dart';
  import 'package:requests/home_page_video.dart';
  import 'package:dots_indicator/dots_indicator.dart';
  import 'package:flutter/cupertino.dart';
  import 'package:flutter/material.dart';
  import 'package:http/http.dart';
  import 'package:font_awesome_flutter/font_awesome_flutter.dart';
  
  class HomePageBody extends StatefulWidget {
    const HomePageBody({super.key});
  
    @override
    State<HomePageBody> createState() => _HomePageBodyState();
  }
  
  class _HomePageBodyState extends State<HomePageBody> {
    PageController freeController = PageController(viewportFraction: 0.85);
    PageController proController = PageController(viewportFraction: 0.85);
    var _freeCurrentPageValue = 0.0;
    var _proCurrentPageValue = 0.0;
    var _freeScaleFactor = 0.8;
    var _proScaleFactor = 0.8;
    double _height = 320;
  
    List<MainFree> _free_items = [];
  
  
  
    @override
    void initState() {
      freeController.addListener(() {
        setState(() {
          _freeCurrentPageValue = freeController.page!;
        });
      });
      proController.addListener(() {
        setState(() {
          _proCurrentPageValue = proController.page!;
        });
      });
      freeItem();
      super.initState();
    }
  
    @override
    void dispose() {
      freeController.dispose();
      proController.dispose();
      super.dispose();
    }
  
    @override
    Widget build(BuildContext context) {
      return Container(
        child: SingleChildScrollView(
          child: Column(
            children: [
              Container(
                height: MediaQuery.of(context).size.height/3.6,
                child: PageView.builder(
                    controller: freeController,
                    itemCount: _free_items.length,
                    itemBuilder: (context, position){
                      return _freePageItem(_free_items[index]);
                    }),
              ),
          ),
        ),
      );
    }
  
    Widget _freePageItem(int index, MainFree free){
      Matrix4 matrix4 = new Matrix4.identity();
      if (index == _freeCurrentPageValue.floor()) {
        var currScale = 1 - (_freeCurrentPageValue - index) * (1 - _freeScaleFactor);
        var currTrans = _height * (1 - currScale) / 2;
        matrix4 = Matrix4.diagonal3Values(1, currScale, 1)..setTranslationRaw(0, currTrans, 0);
      } else if (index == _freeCurrentPageValue.floor() + 1) {
        var currScale = _freeScaleFactor + (_freeCurrentPageValue - index + 1) * (1 - _freeScaleFactor);
        var currTrans = _height * (1 - currScale) / 2;
        matrix4 = Matrix4.diagonal3Values(1, currScale, 1);
        matrix4 = Matrix4.diagonal3Values(1, currScale, 1)..setTranslationRaw(0, currTrans, 0);
      } else if (index == _freeCurrentPageValue.floor() - 1) {
        var currScale = 1 - (_freeCurrentPageValue - index) * (1 - _freeScaleFactor);
        var currTrans = _height * (1 - currScale) / 2;
        matrix4 = Matrix4.diagonal3Values(1, currScale, 1);
        matrix4 = Matrix4.diagonal3Values(1, currScale, 1)..setTranslationRaw(0, currTrans, 0);
      } else {
        var currScale = 0.8;
        matrix4 = Matrix4.diagonal3Values(1, currScale, 1)..setTranslationRaw(0, _height * (1 - _freeScaleFactor) / 2, 1);
      }
  
      return Transform(
        transform: matrix4,
        child: Stack(
          children: [
            Container(
              height: MediaQuery.of(context).size.height/6,
              margin: EdgeInsets.only(left: 5, right: 5),
              decoration: BoxDecoration(
                  borderRadius: BorderRadius.circular(30),
                  color: Colors.deepOrange,
                  image: DecorationImage(
                      fit: BoxFit.cover,
                      image: AssetImage(
                          free.app_image
                      )
                  )
  
              ),
            ),
          ],
        ),
      );
    }
    
    void freeItem() async{
      var url = Uri.https('www.geors.ir', '/api_free/', {'q': '{http}'});
      var response = await get(url);
      print(utf8.decode(response.bodyBytes));
      setState(() {
        var free_json = json.decode(utf8.decode(response.bodyBytes));
        for (var i in free_json){
          var free_items = MainFree(i['title'], i['app_image'], i['category'], i['tech_count'], i['views'], i['meta_description']);
          _free_items.add(free_items);
        }
      });
    }
  }

it raise this error:

Error: Too few positional arguments: 2 required, 1 given.
                    return _freePageItem(_free_items[index]);
                                        ^