A career finder application
- Github jobs [https://jobs.github.com] - RESTful API (Note: To be replaced)
- Web View
- Html View
- SQLite
To fetch data from RESTful API, You need to use http package Examine the following example:
Future<List<Job>> fetchJobs() async {
final respone = await http
.get(Uri.parse('https://jobs.github.com/positions.json?description='));
final parsed = jsonDecode(respone.body).cast<Map<String, dynamic>>();
return parsed.map<Job>((json) => Job.fromJson(json)).toList();
}
Examine the following example:
Future<List<Job>> searchJobs(
String description, String location, bool fullTime) async {
String descriptionVariable =
description.isNotEmpty ? 'description=' + description : 'description=';
String locationVariable =
location.isNotEmpty ? '&location=' + location : '&location=';
String fullTimeVariable = fullTime ? '&full_time=true' : '';
final response = await http.get(Uri.parse(
'https://jobs.github.com/positions.json?' +
descriptionVariable +
fullTimeVariable +
locationVariable));
final parsed = jsonDecode(response.body).cast<Map<String, dynamic>>();
return parsed.map<Job>((json) => Job.fromJson(json)).toList();
}
For more information, see Fetch data from the internet at Flutter documentation.
For the whole code, you can see Fetch API functions code
To store data on local device, You can use SQLite database to save your data on your phone. To download the package, go to sqflite
static Future<Database> futureDatabase;
static Database database;
void onDatabaseIntialize() async {
var databasePath = await getDatabasesPath();
String path = join(databasePath, 'saved_jobs_database.db');
futureDatabase = openDatabase(path, onCreate: (db, version) {
return db.execute(
'CREATE TABLE savedJobs(jobID TEXT PRIMARY KEY, type TEXT, jobURL TEXT, createTime TEXT, companyName TEXT, companyURL TEXT, location TEXT, title TEXT, description TEXT, companyLogoURL TEXT, howToApply TEXT)');
}, version: 1);
database = await futureDatabase;
}
To add data (in our case jobs):
Future<void> addJob(Job job) async {
await database.insert('savedJobs', job.toDatabaseMap(),
conflictAlgorithm: ConflictAlgorithm.replace);
}
To remove data:
Future<void> deleteJob(String id) async {
await database.delete('savedJobs', where: 'jobID = ?', whereArgs: [id]);
}
To see the whole code, visit Jobs Database