build_app
This commit is contained in:
parent
4ac402de09
commit
19635b65e9
@ -72,6 +72,9 @@ public class BuilderService {
|
||||
addCustomMenu( "Forma", "Transcations");
|
||||
|
||||
|
||||
addCustomMenu( "Forma", "Transcations");
|
||||
|
||||
|
||||
|
||||
System.out.println("dashboard and menu inserted...");
|
||||
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
CREATE TABLE db.Forma(id BIGINT NOT NULL AUTO_INCREMENT, datagg VARCHAR(400), name VARCHAR(400), PRIMARY KEY (id));
|
||||
CREATE TABLE db.Forma(id BIGINT NOT NULL AUTO_INCREMENT, valuelist VARCHAR(400), name VARCHAR(400), PRIMARY KEY (id));
|
||||
|
||||
|
||||
@ -53,13 +53,11 @@ final Map<String, dynamic> formData = {};
|
||||
final TextEditingController nameController = TextEditingController();
|
||||
|
||||
|
||||
late Future<List<Map<String, dynamic>>> _dataggdataFuture; // Data from fetchData
|
||||
late Future<List<Map<String, dynamic>>> _valuelistdataFuture; // Data from fetchData
|
||||
|
||||
Future<List<Map<String, dynamic>>> dataggfetchData() async {
|
||||
Future<List<Map<String, dynamic>>> valuelistfetchData() async {
|
||||
|
||||
final provider =
|
||||
Provider.of<FormaViewModelScreen>(context, listen: false);
|
||||
final resp = await provider.getdataggGrid();
|
||||
final resp = await apiService.getEntities();
|
||||
|
||||
if (resp != null) {
|
||||
return resp;
|
||||
@ -69,13 +67,102 @@ final provider =
|
||||
|
||||
}
|
||||
|
||||
|
||||
void showvaluelistDialog(BuildContext context) {
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return SingleChildScrollView(
|
||||
child: AlertDialog(
|
||||
title: const Text('Select a record'),
|
||||
content: FutureBuilder<List<Map<String, dynamic>>>(
|
||||
future: _valuelistdataFuture,
|
||||
builder: (context, snapshot) {
|
||||
if (snapshot.connectionState == ConnectionState.waiting) {
|
||||
return const Center(child: CircularProgressIndicator());
|
||||
} else if (snapshot.hasError) {
|
||||
return Center(child: Text('Error: ${snapshot.error}'));
|
||||
} else if (!snapshot.hasData || snapshot.data!.isEmpty) {
|
||||
return const Center(child: Text('No data available..'));
|
||||
} else {
|
||||
final List<String> columnsToShow = [
|
||||
|
||||
|
||||
|
||||
|
||||
'name',
|
||||
|
||||
|
||||
];
|
||||
return SingleChildScrollView(
|
||||
scrollDirection: Axis.horizontal,
|
||||
child: DataTable(
|
||||
columnSpacing: 30,
|
||||
headingRowColor: MaterialStateColor.resolveWith(
|
||||
(states) => Colors.blue.shade100),
|
||||
dataRowColor: MaterialStateColor.resolveWith(
|
||||
(states) => Colors.white),
|
||||
dividerThickness: 0.5,
|
||||
columns: columnsToShow
|
||||
.map(
|
||||
(key) => DataColumn(
|
||||
label: Text(
|
||||
key,
|
||||
style: const TextStyle(
|
||||
fontWeight: FontWeight.bold, fontSize: 16),
|
||||
),
|
||||
),
|
||||
)
|
||||
.toList(),
|
||||
rows: snapshot.data!.map((item) {
|
||||
return DataRow(
|
||||
cells: columnsToShow.map((key) {
|
||||
return DataCell(
|
||||
Text(
|
||||
item[key].toString(),
|
||||
style: const TextStyle(fontSize: 14),
|
||||
),
|
||||
onTap: () {
|
||||
setState(() {
|
||||
|
||||
|
||||
nameController.text = item['name'] ?? '';
|
||||
|
||||
|
||||
// Add more fields as needed
|
||||
});
|
||||
Navigator.pop(context);
|
||||
},
|
||||
);
|
||||
}).toList());
|
||||
}).toList(),
|
||||
),
|
||||
);
|
||||
}
|
||||
},
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
child: const Text('Close'),
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
final provider = Provider.of<FormaViewModelScreen>(context, listen: false);
|
||||
|
||||
|
||||
_dataggdataFuture = dataggfetchData(); // Initialize _dataFuture with the function
|
||||
_valuelistdataFuture = valuelistfetchData(); // Initialize _dataFuture with the function
|
||||
|
||||
|
||||
}
|
||||
@ -100,7 +187,14 @@ final provider =
|
||||
centerTitle: true,
|
||||
title: AppbarTitle(text: "Create Forma"),
|
||||
|
||||
|
||||
actions: [
|
||||
IconButton(
|
||||
icon: const Icon(Icons.grid_on),
|
||||
onPressed: () {
|
||||
showvaluelistDialog(context);
|
||||
},
|
||||
),
|
||||
],
|
||||
|
||||
),
|
||||
body: SingleChildScrollView(
|
||||
@ -171,52 +265,6 @@ final provider =
|
||||
),
|
||||
|
||||
|
||||
SizedBox(height: 16),
|
||||
|
||||
FutureBuilder<List<Map<String, dynamic>>>(
|
||||
future: _dataggdataFuture,
|
||||
builder: (context, snapshot) {
|
||||
if (snapshot.connectionState == ConnectionState.waiting) {
|
||||
return const Center(child: CircularProgressIndicator());
|
||||
} else if (snapshot.hasError) {
|
||||
return Center(child: Text('Error: ${snapshot.error}'));
|
||||
} else if (!snapshot.hasData || snapshot.data!.isEmpty) {
|
||||
return const Center(child: Text('No data available..'));
|
||||
} else {
|
||||
final keys = snapshot.data!.first.keys.toList();
|
||||
|
||||
return SingleChildScrollView(
|
||||
scrollDirection: Axis.horizontal,
|
||||
child: DataTable(
|
||||
columnSpacing: 30,
|
||||
headingRowColor: MaterialStateColor.resolveWith((states) => Colors.blue.shade100),
|
||||
dataRowColor: MaterialStateColor.resolveWith((states) => Colors.white),
|
||||
dividerThickness: 0.5,
|
||||
columns: keys.map(
|
||||
(key) => DataColumn(
|
||||
label: Text(
|
||||
key,
|
||||
style: const TextStyle(fontWeight: FontWeight.bold, fontSize: 16),
|
||||
),
|
||||
),
|
||||
)
|
||||
.toList(),
|
||||
rows: snapshot.data!.map((item) {
|
||||
return DataRow(cells: keys.map((key) {
|
||||
return DataCell(
|
||||
Text(
|
||||
item[key].toString(),
|
||||
style: const TextStyle(fontSize: 14),
|
||||
),
|
||||
);
|
||||
}).toList());
|
||||
}).toList(),
|
||||
),
|
||||
);
|
||||
}
|
||||
},
|
||||
),
|
||||
SizedBox(height: 16),
|
||||
|
||||
|
||||
],
|
||||
|
||||
@ -172,15 +172,11 @@ Future<void> fetchEntities() async {
|
||||
|
||||
|
||||
|
||||
entity['name'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
|
||||
entity['name'].toString().toLowerCase().contains(keyword.toLowerCase())
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
entity['datagg'].toString().toLowerCase().contains(keyword.toLowerCase())
|
||||
|
||||
|
||||
).toList();
|
||||
});
|
||||
}
|
||||
|
||||
@ -38,7 +38,7 @@ class _formaUpdateEntityScreenState extends State<formaUpdateEntityScreen> {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@override
|
||||
@ -47,7 +47,7 @@ class _formaUpdateEntityScreenState extends State<formaUpdateEntityScreen> {
|
||||
final provider = Provider.of<FormaViewModelScreen>(context, listen: false);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -95,7 +95,26 @@ class _formaUpdateEntityScreenState extends State<formaUpdateEntityScreen> {
|
||||
SizedBox(height: 16),
|
||||
|
||||
|
||||
Padding(
|
||||
padding: EdgeInsets.all(16),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
|
||||
|
||||
ElevatedButton(
|
||||
onPressed: () {
|
||||
// Save changes logic here
|
||||
|
||||
|
||||
Navigator.pop(context);
|
||||
// Implement API call to update data
|
||||
},
|
||||
child: Text('Save'),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
|
||||
CustomButton(
|
||||
|
||||
@ -61,14 +61,6 @@ class FormaRepoScreen {
|
||||
}
|
||||
|
||||
|
||||
Future<dynamic> getdataggGrid() async {
|
||||
try {
|
||||
String apiUrl = "$baseUrl/Forma_ListFilter1/Forma_ListFilter1";
|
||||
final response = await _helper.getGetApiResponse(apiUrl);
|
||||
return response;
|
||||
} catch (e) {
|
||||
throw Exception('Failed to Upload datagg: $e');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -100,21 +100,6 @@ class FormaViewModelScreen extends ChangeNotifier{
|
||||
}
|
||||
|
||||
|
||||
late List<Map<String, dynamic>> dataggdataFuture =
|
||||
[]; // Data from fetchData
|
||||
|
||||
Future<List<Map<String, dynamic>>> getdataggGrid() async {
|
||||
|
||||
try {
|
||||
final value = await repo.getdataggGrid();
|
||||
dataggdataFuture = (value as List)
|
||||
.map((item) => item as Map<String, dynamic>)
|
||||
.toList();
|
||||
|
||||
return dataggdataFuture;
|
||||
} catch (e) {
|
||||
throw Exception('Failed to get all: $e');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,5 +1,6 @@
|
||||
import '../../Entity/basic/Forma/FormaView/Forma_entity_list_screen.dart';
|
||||
import '../../Entity/basic/Forma/Forma_viewModel/Forma_view_model_screen.dart';
|
||||
|
||||
import '../../Entity/basic/Forma/FormaView/Forma_entity_list_screen.dart';
|
||||
import '../../Entity/basic/Forma/Forma_viewModel/Forma_view_model_screen.dart';
|
||||
|
||||
import 'package:base_project/utils/image_constant.dart';
|
||||
import 'package:base_project/commans/widgets/custome_drawe_item.dart';
|
||||
@ -73,22 +74,24 @@ Navigator.pushNamed(context, RouteNames.changePasswordView);
|
||||
),
|
||||
|
||||
// NEW MENU
|
||||
DrawerItem(
|
||||
color: AppColors.primary,
|
||||
icon: Icons.chat_bubble,
|
||||
title: 'Forma',
|
||||
onTap: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) => ChangeNotifierProvider(
|
||||
create: (context) => FormaViewModelScreen(),
|
||||
child: forma_entity_list_screen(),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
|
||||
|
||||
DrawerItem(
|
||||
color: AppColors.primary,
|
||||
icon: Icons.chat_bubble,
|
||||
title: 'Forma',
|
||||
onTap: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) => ChangeNotifierProvider(
|
||||
create: (context) => FormaViewModelScreen(),
|
||||
child: forma_entity_list_screen(),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
|
||||
|
||||
DrawerItem(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user