dart_inquirer 1.0.0
This library makes developing interacive Prompts in Dart easy and fun
Dart Inquirer
This library makes developing interacive Prompts in Dart easy 👍 and pretty 😍
!WARNING! : This project is still under development, tips and tricks are always appreaciated
Usage
A simple usage example:
import 'package:dart_inquirer/dart_inquirer.dart';
main() {
List questions = [
InputQuestion('name', 'Whats your beautiful name ?')
];
Prompt prompt = Prompt(questions);
prompt.execute().then((Map answers) => print('🎉 Hello ${(answers["name"] as String).isNotEmpty ? answers["name"] : 'World'} 🖖'));
}
Prompt types
Dart Inquirer is my first Project so I didn't implement a lot of Question Types, but the most important ones
InputQuestion
The InputQuestion can handle simple Inputs and returns a String
import 'package:dart_inquirer/dart_inquirer.dart';
main() async {
List<Question> questions = [
InputQuestion('name', 'Whats your beautiful name ?')
];
Prompt prompt = Prompt(questions);
var name = (await prompt.execute())["name"];
print("✋ Hello $name 🎊");
}
ConfirmQuestion
Every project needs some kind of user confirmation, so for that reason we have the ConfirmQuestion
import 'package:dart_inquirer/dart_inquirer.dart';
main() {
List<Question> questions = [
ConfirmQuestion('alien', 'Are you a citizen of Earth ?')
];
Prompt prompt = Prompt(questions);
if (!(await prompt.execute())["alien"]){
print("👽🖖 Please don't experiment with us 👾🐄");
}else {
print("🌍 Earthlings are always welcome 🌎");
}
}
Also you can change either if the Y or N is preffered
import 'package:dart_inquirer/dart_inquirer.dart';
main() async{
List<Question> questions = [
// ⬇⬇⬇ CHANGED THIS LINE ⬇⬇⬇
ConfirmQuestion('alien', 'Are you a citizen of Earth ?', preferN: true)
//ConfirmQuestion('alien', 'Are you a citizen of Earth ?') ⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆
];
Prompt prompt = Prompt(questions);
if (!(await prompt.execute())["alien"]){
print("👽🖖 Please don't experiment with us 👾🐄");
}else {
print("🌍 Earthlings are always welcome 🌎");
}
}
PasswordQuestion
Sometimes your users will need to specify some super secret thing 😜 so for that purpose we have the password question. It will protect others from just seeing the Input
!Warning! : This is not very secure
import 'package:dart_inquirer/dart_inquirer.dart';
main() async {
List<Question> questions = [
PasswordQuestion('secret', 'Whats your biggest fear ?')
];
Prompt prompt = Prompt(questions);
String fear = (await prompt.execute())["secret"];
print("👻 Man this ${'*'*fear.length} is very scary ☠");
}
ListQuestion
If you want your users to select an option you can do that by simply using a ListQuestion
import 'package:dart_inquirer/dart_inquirer.dart';
main() async {
List<Question> questions = [
ListQuestion('hate', 'What do you like least on your Pizza', ['Pineapple', 'Ham', 'Tomatoes'])
];
Prompt prompt = Prompt(questions);
String hate = (await prompt.execute())["hate"];
print("🍕 I wouldn't eat $hate as well 😰");
}
Helpers
I have implemented some helpers
Pretty json formatting
import 'package:dart_inquirer/dart_inquirer.dart';
main() async {
List<Question> questions = [
ListQuestion('first', 'Select a letter', ['A', 'B', 'C']),
ConfirmQuestion('second', 'Is this the letter you want ?')
];
Map answers = {};
Prompt prompt = Prompt(questions);
while (answers["second"] != true) {
answers = await prompt.execute();
}
prettyPrintJson(answers);
}
[1] A
[2] B
[3] C
[✓] Select a letter : 2
[✓] Is this the letter you want ? (Y/n) y
{
first : B
second : true
}
Skipping Questions
You can skip a question if you don't want to let it execute, just specify a conditional function
import 'package:dart_inquirer/dart_inquirer.dart';
main() async{
List<Question> questions = [
ConfirmQuestion('confirm', 'Do you want to type your name ?'),
InputQuestion('name', 'Username:', skipIf: (Map ctx) => ctx["confirm"] == false)
];
Map answers = await Prompt(questions).execute();
print("😸 Hello ${(answers["name"] as String).isNotEmpty ? answers["name"] : 'World'} 😛");
}
Sepperator
Maybe you want to put down a nice Sepperator ... then this here is for you
import 'package:dart_inquirer/dart_inquirer.dart';
main() {
print(Seperator());
print(Seperator('='));
}
Features and bugs
Please file feature requests and bugs at the issue tracker.