change list organization page
This commit is contained in:
parent
b6d4be7f97
commit
f487c9aeb0
|
|
@ -1,6 +1,6 @@
|
||||||
abstract class Repository<T> {
|
abstract class Repository<T> {
|
||||||
Future<List<T>> load();
|
Future<List<T>> load();
|
||||||
Future<T> add(T organization);
|
Future<T> add(T value);
|
||||||
Future<void> update(T organization);
|
Future<void> update(T value);
|
||||||
Future<void> delete(String? id);
|
Future<void> delete(String? id);
|
||||||
}
|
}
|
||||||
|
|
@ -47,7 +47,7 @@ class _OrganizationDetailPage extends State<OrganizationDetailPage>{
|
||||||
icon: const Icon(Icons.edit),
|
icon: const Icon(Icons.edit),
|
||||||
tooltip: 'Редактировать',
|
tooltip: 'Редактировать',
|
||||||
onPressed: () => Navigator.of(context).push(
|
onPressed: () => Navigator.of(context).push(
|
||||||
MaterialPageRoute(builder: (ctx) => OrganizationAddPage(initialOrganization: editOrganization)))
|
MaterialPageRoute(builder: (ctx) => OrganizationEditPage(initialOrganization: editOrganization)))
|
||||||
.then((value) => {
|
.then((value) => {
|
||||||
setState(() {
|
setState(() {
|
||||||
if (value != null && value is Organization)
|
if (value != null && value is Organization)
|
||||||
|
|
|
||||||
|
|
@ -4,15 +4,15 @@ import 'package:instruction_app/providers/organization_ptovider.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
|
||||||
class OrganizationAddPage extends StatefulWidget {
|
class OrganizationEditPage extends StatefulWidget {
|
||||||
final Organization? initialOrganization;
|
final Organization? initialOrganization;
|
||||||
const OrganizationAddPage({super.key, this.initialOrganization});
|
const OrganizationEditPage({super.key, this.initialOrganization});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<OrganizationAddPage> createState() => _OrganizationAddPage();
|
State<OrganizationEditPage> createState() => _OrganizationEditPage();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _OrganizationAddPage extends State<OrganizationAddPage> {
|
class _OrganizationEditPage extends State<OrganizationEditPage> {
|
||||||
final _formKey = GlobalKey<FormState>();
|
final _formKey = GlobalKey<FormState>();
|
||||||
late TextEditingController _titleController;
|
late TextEditingController _titleController;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:instruction_app/models/organization.dart';
|
||||||
import 'package:instruction_app/providers/organization_ptovider.dart';
|
import 'package:instruction_app/providers/organization_ptovider.dart';
|
||||||
import 'package:instruction_app/screens/organization_page/edit_organization_page.dart';
|
import 'package:instruction_app/screens/organization_page/edit_organization_page.dart';
|
||||||
import 'package:instruction_app/screens/organization_page/detail_organization_page.dart';
|
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
class OrganizationListPage extends StatefulWidget {
|
class OrganizationListPage extends StatefulWidget {
|
||||||
|
|
@ -20,6 +20,31 @@ class _OrganizationListPage extends State<OrganizationListPage>{
|
||||||
.loadOrganizations());
|
.loadOrganizations());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _deleteOrganization(BuildContext context, Organization organization) async {
|
||||||
|
showDialog(
|
||||||
|
context: context,
|
||||||
|
barrierDismissible: false,
|
||||||
|
builder: (ctx) => AlertDialog(
|
||||||
|
title: const Text('Подтверждение операции'),
|
||||||
|
content: Text("Вы уверены, что хотите удалить организацию \"${organization.title}\"?"),
|
||||||
|
actions: [
|
||||||
|
TextButton(
|
||||||
|
onPressed: () => Navigator.of(ctx).pop(),
|
||||||
|
child: const Text('Отмена')
|
||||||
|
),
|
||||||
|
TextButton(
|
||||||
|
onPressed: () {
|
||||||
|
Provider.of<OrganizationProvider>(context, listen: false)
|
||||||
|
.deleteOrganization(organization.id!);
|
||||||
|
Navigator.of(ctx).pop();
|
||||||
|
},
|
||||||
|
child: const Text('Удалить', style: TextStyle(color: Colors.red))
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
|
|
@ -41,7 +66,7 @@ class _OrganizationListPage extends State<OrganizationListPage>{
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
// возможно поменять
|
// возможно поменять
|
||||||
Navigator.of(context).push(
|
Navigator.of(context).push(
|
||||||
MaterialPageRoute(builder: (context) => const OrganizationAddPage()),
|
MaterialPageRoute(builder: (context) => const OrganizationEditPage()),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
tooltip: "Добавить организацию",
|
tooltip: "Добавить организацию",
|
||||||
|
|
@ -66,18 +91,39 @@ class _OrganizationListPage extends State<OrganizationListPage>{
|
||||||
itemCount: provider.organizations.length,
|
itemCount: provider.organizations.length,
|
||||||
itemBuilder: (context, index) {
|
itemBuilder: (context, index) {
|
||||||
final organization = provider.organizations[index];
|
final organization = provider.organizations[index];
|
||||||
return Card(
|
return
|
||||||
|
Card( // возможно убрать
|
||||||
margin: const EdgeInsets.symmetric(
|
margin: const EdgeInsets.symmetric(
|
||||||
horizontal: 16,
|
horizontal: 16,
|
||||||
vertical: 8
|
vertical: 8
|
||||||
),
|
),
|
||||||
child: ListTile(
|
child: ListTile(
|
||||||
title: Text(organization.title),
|
title: Text(organization.title),
|
||||||
onTap: () {
|
trailing: Row(
|
||||||
Navigator.of(context).push(MaterialPageRoute(
|
mainAxisSize: MainAxisSize.min,
|
||||||
builder: (ctx) => OrganizationDetailPage(initialOrganization: organization),
|
children: [
|
||||||
));
|
IconButton(
|
||||||
},
|
icon: Icon(Icons.edit),
|
||||||
|
tooltip: 'Редактировать',
|
||||||
|
onPressed: () {
|
||||||
|
Navigator.of(context).push(
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => OrganizationEditPage(initialOrganization: organization)
|
||||||
|
));
|
||||||
|
},
|
||||||
|
),
|
||||||
|
IconButton(
|
||||||
|
icon: Icon(Icons.delete),
|
||||||
|
tooltip: 'Удалить',
|
||||||
|
onPressed: () => _deleteOrganization(context, organization),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
// onTap: () {
|
||||||
|
// Navigator.of(context).push(MaterialPageRoute(
|
||||||
|
// builder: (ctx) => OrganizationDetailPage(initialOrganization: organization),
|
||||||
|
// ));
|
||||||
|
// },
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue