add_person.dart 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import 'dart:io';
  2. import 'dart_tutorial/addressbook.pb.dart';
  3. // This function fills in a Person message based on user input.
  4. Person promptForAddress() {
  5. Person person = Person();
  6. print('Enter person ID: ');
  7. String input = stdin.readLineSync();
  8. person.id = int.parse(input);
  9. print('Enter name');
  10. person.name = stdin.readLineSync();
  11. print('Enter email address (blank for none) : ');
  12. String email = stdin.readLineSync();
  13. if (email.isNotEmpty) {
  14. person.email = email;
  15. }
  16. while (true) {
  17. print('Enter a phone number (or leave blank to finish): ');
  18. String number = stdin.readLineSync();
  19. if (number.isEmpty) break;
  20. Person_PhoneNumber phoneNumber = Person_PhoneNumber();
  21. phoneNumber.number = number;
  22. print('Is this a mobile, home, or work phone? ');
  23. String type = stdin.readLineSync();
  24. switch (type) {
  25. case 'mobile':
  26. phoneNumber.type = Person_PhoneType.MOBILE;
  27. break;
  28. case 'home':
  29. phoneNumber.type = Person_PhoneType.HOME;
  30. break;
  31. case 'work':
  32. phoneNumber.type = Person_PhoneType.WORK;
  33. break;
  34. default:
  35. print('Unknown phone type. Using default.');
  36. }
  37. person.phones.add(phoneNumber);
  38. }
  39. return person;
  40. }
  41. // Reads the entire address book from a file, adds one person based
  42. // on user input, then writes it back out to the same file.
  43. main(List<String> arguments) {
  44. if (arguments.length != 1) {
  45. print('Usage: add_person ADDRESS_BOOK_FILE');
  46. exit(-1);
  47. }
  48. File file = File(arguments.first);
  49. AddressBook addressBook;
  50. if (!file.existsSync()) {
  51. print('File not found. Creating new file.');
  52. addressBook = AddressBook();
  53. } else {
  54. addressBook = AddressBook.fromBuffer(file.readAsBytesSync());
  55. }
  56. addressBook.people.add(promptForAddress());
  57. file.writeAsBytes(addressBook.writeToBuffer());
  58. }