ids_material_sdk 3.3.0
ids_material_sdk: ^3.3.0 copied to clipboard
Fast Networking,Cache,Save server cost,IDS Material SDK,MultiselectDropDown,DropDown,Custom,Networking Services,Theme,Field,Productivity,Widget,Custom Widget,tools,IDS
example/main.dart
import 'package:flutter/material.dart';
import 'package:ids_material_sdk/ids_api_manager.dart';
import 'package:ids_material_sdk/ui/widget/fields/ids_field_title.dart';
import 'package:ids_material_sdk/ui/widget/fields/ids_text_area_title.dart';
import 'package:ids_material_sdk/ui/widget/fields/ids_uitextfield.dart';
import 'package:ids_material_sdk/ui/widget/ids_dropdown.dart';
import 'package:ids_material_sdk/ui/widget/ids_dropdown_string.dart';
import 'package:ids_material_sdk/ui/widget/ids_dropdown_title.dart';
import 'package:ids_material_sdk/ui/widget/ids_multiselect_drop_down.dart';
import 'package:ids_material_sdk/ui/widget/theme.dart';
import 'package:ids_material_sdk/utilities/ids_helper.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
@override
MyHomePageState createState() => MyHomePageState();
}
class MyHomePageState extends State<MyHomePage> {
final TextEditingController _editingController = TextEditingController();
List<String> selectedJobRole = [];
List<String> jobRole = []; // Placeholder for job role list
@override
void initState() {
super.initState();
// Example network request when the widget initializes
makeApiCalls();
}
// Example of form data based API call
void makeApiCalls() {
var request = {"UserName": "ddd", "Password": "ddd"};
// Example: Upload form data (POST)
final Future<Map<String, dynamic>> apiResponse = IDSApiManager()
.uploadFormData("http://ids.com/api/v1/login", request,
"local-url-path-of-file", {"Connection": "keep-alive"});
apiResponse.then((response) {
IDSHelper.debugJSON(response);
});
// Example: POST form data (returns array)
/**
* Example code of networking api. use case is that when api return the array response. use the below sample code snippet in your project, This code snipped is for form data based api.
*/
final Future<List<dynamic>> apiResponse1 = IDSApiManager()
.postFormDataInBgArray("http://ids.com/api/v1/login", request,
{"Connection": "keep-alive"});
apiResponse1.then((response) {
IDSHelper.debugJSON(response);
});
// Example: Get request
/**
* Example code of networking api. use the below sample code snippet in your project, This code snipped is for get method.
*/
final Future<Map<String, dynamic>> apiResponse2 =
IDSApiManager().getInBg("http://ids.com/api/v1/getUsers", {});
apiResponse2.then((response) {
IDSHelper.debugJSON(response);
});
// Example: Upload file with parameters
/**
* Example code of networking api. use the below sample code snippet in your project, This code snipped is upload the file with parameters.
*/
var request2 = {"UserName": "ddd", "Password": "ddd"};
final Future<Map<String, dynamic>> apiResponse3 = IDSApiManager()
.uploadFormData("http://ids.com/api/v1/uploadDocuments", request2,
"local-url-path-of-file", {"Connection": "keep-alive"});
apiResponse3.then((response) {
IDSHelper.debugJSON(response);
});
// Example: POST JSON payload
/**
* Example code of networking api. use the below sample code snippet in your project, This code snipped is for json body payload based api.
*/
var request3 = {"UserName": "ddd", "Password": "ddd"};
final Future<Map<String, dynamic>> apiResponse4 = IDSApiManager().postInBg(
"http://ids.com/api/v1/login", request3, {"Connection": "keep-alive"});
apiResponse4.then((response) {
IDSHelper.debugJSON(response);
});
/**
* Example code of networking api. use the below sample code snippet in your project, This code snipped is for form data based api.
*/
var request4 = {"UserName": "ddd", "Password": "ddd"};
final Future<Map<String, dynamic>> apiResponse5 = IDSApiManager()
.postFormDataInBg("http://ids.com/api/v1/login", request4,
{"Connection": "keep-alive"});
apiResponse5.then((response) => {IDSHelper.debugJSON(response)});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('IDS Material SDK Example'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// TextField Example
/**
* Example code of texfield. use the below sample code snippet in your project.
*/
IDSUITextField(
controller: _editingController,
hintText: "Password",
prefixIcon: Icons.lock,
prefixIconColor: Colors.grey,
hintTextColor: Colors.grey,
textColor: Colors.black,
borderColor: Colors.grey,
focusedBorderColor: Colors.deepOrangeAccent,
validator: (value) {
if (value == null || value.isEmpty) {
return 'Password is required';
}
return null;
},
),
const SizedBox(height: 16),
// MultiSelect DropDown Example
IDSMultiSelectDropDown(
limit: 3,
onChanged: (List<String> selected) {
setState(() {
selectedJobRole = selected;
});
},
options: jobRole,
selectedValues: selectedJobRole,
onLimitMessage: (limit) {
// Show toast or snackbar for limit reached
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("You can only select $limit items")),
);
},
whenEmpty: 'Select Job Role',
),
const SizedBox(height: 16),
///IDSFieldTitle code snippet
IDSFieldTitle(
title: "Descriptions",
controller: _editingController,
hintText: "bill entry",
hintTextColor: Colors.grey,
textColor: Colors.black,
borderColor: Colors.grey,
focusedBorderColor: Colors.red,
circularRadius: 8.0,
validator: (value) {
if (value == null || value.isEmpty) {
return "Description cannot be empty";
}
return null;
},
),
///IDSDropdownTitle code snippet
IDSDropdownTitle(
title: 'DISPATCH MODE',
selectedValue: "selected value",
onTap: () {
debugPrint("callback");
}),
/// IDSTextAreaTitle code snippet
kSizeBox10,
IDSTextAreaTitle(
title: "Descriptions *",
height: 160,
controller: _editingController,
hintText: "Enter Description",
hintTextColor: Colors.grey,
textColor: Colors.black,
borderColor: Colors.grey,
focusedBorderColor: Colors.red,
circularRadius: 8.0,
validator: (value) {
if (value == null || value.isEmpty) {
return "Description cannot be empty";
}
return null;
},
maxLines: 20),
// Dropdown Button Example
ElevatedButton(
onPressed: () {
navigateToIDSDropDown(context, 1, 'jobRole', jobRole);
},
child: const Text('Show Dropdown'),
),
],
),
),
);
}
// Method to navigate to IDSDropDown dialog
void navigateToIDSDropDown(
BuildContext context, int code, String key, List<dynamic>? array) {
showDialog(
context: context,
builder: (BuildContext context) {
return Center(
child: Dialog(
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(10)),
),
child: IDSDropDown(
appBarBg: Colors.red,
requestedCode: code,
jsonKeyName: key,
dropDownArray: array,
callback: (requestedCode, json) {
if (requestedCode == 1) {
// Handle selection logic here
// Example:
// setState(() {
// selectedJobRole = json["name"];
// });
}
},
),
),
);
},
);
}
// Method to navigate to IDSDropDownString dialog
void navigateToIDSDropDownString(
BuildContext context, int code, List<String> array) {
showDialog(
context: context,
builder: (BuildContext context) {
return Center(
child: Dialog(
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(10)),
),
child: SizedBox(
height: MediaQuery.of(context).size.width,
child: IDSDropDownString(
appBarBg: Colors.red,
requestedCode: code,
dropDownArray: array,
callback: (requestedCode, value) {
if (requestedCode == 1) {
// Handle string selection logic
}
},
),
),
),
);
},
);
}
}