Skip to content

Instantly share code, notes, and snippets.

@jasondlee
Created February 21, 2021 20:48
Show Gist options
  • Save jasondlee/de11c46dda0cd7a5e1df6a5d8057b724 to your computer and use it in GitHub Desktop.
Save jasondlee/de11c46dda0cd7a5e1df6a5d8057b724 to your computer and use it in GitHub Desktop.
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:http/http.dart' as http;
import 'package:json_annotation/json_annotation.dart';
import 'package:steeplesoft_mobile/routes/Routes.dart';
class WeekToDatePage extends StatelessWidget {
final FlutterSecureStorage secureStorage = FlutterSecureStorage();
@override
Widget build(BuildContext context) {
return FutureBuilder<WeekToDateModel>(
future: _getWeekToDateData(context),
builder: (context, snapshot) {
if (snapshot.hasData) {
WeekToDateModel data = snapshot.data;
return _weekToDateView(data);
} else if (snapshot.hasError) {
return Text("${snapshot.error}");
}
return CircularProgressIndicator();
},
);
}
Future<WeekToDateModel> _getWeekToDateData(BuildContext context) async {
var accessToken = await secureStorage.read(key: 'access_token');
var resp = await http.get("https://...",
headers: <String, String>{'Authorization': 'Bearer $accessToken'});
if (resp.statusCode != 200) {
if (resp.statusCode == 401 || resp.statusCode == 403) {
Navigator.pushReplacementNamed(context, Routes.login);
}
throw resp.reasonPhrase;
} else {
return WeekToDateModel.fromJson(json.decode(resp.body));
}
}
Widget _weekToDateView(WeekToDateModel data) {
return Scaffold(
appBar: AppBar(
title: const Text('Week to Date'),
),
body: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text("Label 1"),
ListView.builder(
shrinkWrap: true,
itemCount: data.list1.length,
itemBuilder: (context, index) {
return dataRow(data.list1[index]);
},
),
Text("Label 2"),
],
),
),
);
}
Widget row(AttendanceData ad) {
return Row(
children: [
Text("Some data"),
],
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment