Fragons
Fragons

Reputation: 97

I want to execute a function when the Flutter app starts

I want to send an ID to the server and receive json when the app is launched.

Flow 1.Start my app (Show splash screen) 2.Json request to server 3.If there is data, display page1. If not, display page2

Upvotes: 5

Views: 6918

Answers (3)

theshivamlko
theshivamlko

Reputation: 281

use SchedulerBinding it runs when page is opened and widgets are build.

    @override
  void initState() {
    super.initState();
 SchedulerBinding.instance.addPostFrameCallback((_) {
  // your code after page opens,splash keeps open until work is done
});
}

Upvotes: 1

Daniel
Daniel

Reputation: 1079

it seems you my need to get a bit more learning about Flutter, my sugest is to start with this one only 10 euros will give you base from where will be easier to learn the rest, that said, to get a databse i'm using this code:

//lib/services/networking_service.dart

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

class NetworkHelper {
  final String json;
  final url = 'HERE YOU CAN PUT YOUR API URL';

  NetworkHelper(this.json);

  Map<String, String> headers = {
    "Content-type": "application/x-www-form-urlencoded"
  };

  Future getData(BuildContext context) async {
    http.Response response = await http.post(url, body: json, headers: headers);

    if (response.statusCode == 200) {
      Map<String, dynamic> decodedResp = jsonDecode(response.body);
      print(decodedResp);
      return decodedResp;
    } else {
      print(response.statusCode);
      return null;
    }
  }
}

You can call it from your main like this:

      static getCategories(BuildContext context) async {
        String json =
            'q={"f":"listCategories","Store_id":"$storeId","LANG":"$lang","UID":"$uid"}';
//THIS json VARIABLE IS WHERE YOU NEED TO PUT YOUR API CALL LÓGIC TO GET THAT ID, I LEAVE THIS FOR YOUR BETTER UNDERSTANDING
        NetworkHelper networkHelper = NetworkHelper(json);
        var decodedResp = await networkHelper.getData(context);
        final CategoriesModel respData = CategoriesModel.fromJson(decodedResp);
        print(respData);
        //HERE YOU MAY RETURN O STORE IN PROVIDER YOUR RESPONSE AND SEND THE USER TO THE PAGE YOU CONSIDER
      }

If you need more help I'm happy to help, but consider taking the course o learn a bit more, it will be lots more easy and enjoyable after.

Upvotes: 2

Hardik Kumbhani
Hardik Kumbhani

Reputation: 2021

@override
void initState() {
super.initState();
Timer(
    Duration(seconds: 3),// you can do your stuff here when splash screen run

        () => Navigator.of(context).pushReplacement(MaterialPageRoute(
        builder: (BuildContext context) => LoginScreen())));}

and please put this code into the spalsh screen

Upvotes: 0

Related Questions