devla_request 0.0.3 devla_request: ^0.0.3 copied to clipboard
http client request for dart with interceptor integrate ( BaseURL, RefreshToken when Token expired, etc...).
import 'dart:convert';
import 'package:example/src/controllers/index.dart';
import 'package:example/src/models/todo.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
Future<void> main() async {
Get.put<Controller>(Controller());
await GetStorage.init();
WidgetsFlutterBinding.ensureInitialized();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return GetMaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
Controller _controller = Get.put(Controller());
List<TodosModel> _listItem = [];
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
void initState() {
super.initState();
fetchData();
}
void fetchData() async {
var data = await _controller.fetchData();
var items = json.encode(data);
_listItem.clear();
_listItem.addAll(todosModelFromJson(items));
setState(() {});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Container(
child: ListView(
children: _listItem
.map((e) => ListTile(
title: Text(e.title),
subtitle: Text(e.userId.toString()),
))
.toList(),
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
), // This trailing comma makes auto-formatting nicer for build methods.
);
}
}