1
0
mirror of https://github.com/flutter/samples.git synced 2026-03-23 04:41:38 +00:00
Files
samples/experimental/web_dashboard/lib/src/widgets/dialogs.dart
2022-05-17 02:53:27 -07:00

105 lines
2.4 KiB
Dart

// Copyright 2020, the Flutter project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:web_dashboard/src/api/api.dart';
import 'package:web_dashboard/src/widgets/category_forms.dart';
import '../app.dart';
import 'edit_entry.dart';
class NewCategoryDialog extends StatelessWidget {
const NewCategoryDialog({super.key});
@override
Widget build(BuildContext context) {
return const SimpleDialog(
title: Text('New Category'),
children: [
NewCategoryForm(),
],
);
}
}
class EditCategoryDialog extends StatelessWidget {
final Category category;
const EditCategoryDialog({
required this.category,
super.key,
});
@override
Widget build(BuildContext context) {
var api = Provider.of<AppState>(context).api;
return SimpleDialog(
title: const Text('Edit Category'),
children: [
EditCategoryForm(
category: category,
onDone: (shouldUpdate) {
if (shouldUpdate) {
api!.categories.update(category, category.id!);
}
Navigator.of(context).pop();
},
),
],
);
}
}
class NewEntryDialog extends StatefulWidget {
const NewEntryDialog({super.key});
@override
State<NewEntryDialog> createState() => _NewEntryDialogState();
}
class _NewEntryDialogState extends State<NewEntryDialog> {
@override
Widget build(BuildContext context) {
return const SimpleDialog(
title: Text('New Entry'),
children: [
NewEntryForm(),
],
);
}
}
class EditEntryDialog extends StatelessWidget {
final Category? category;
final Entry? entry;
const EditEntryDialog({
this.category,
this.entry,
super.key,
});
@override
Widget build(BuildContext context) {
var api = Provider.of<AppState>(context).api;
return SimpleDialog(
title: const Text('Edit Entry'),
children: [
EditEntryForm(
entry: entry,
onDone: (shouldUpdate) {
if (shouldUpdate) {
api!.entries.update(category!.id!, entry!.id!, entry!);
}
Navigator.of(context).pop();
},
)
],
);
}
}