|  | import 'dart:io'; | 
|  |  | 
|  | import 'dart_tutorial/addressbook.pb.dart'; | 
|  |  | 
|  | // This function fills in a Person message based on user input. | 
|  | Person promptForAddress() { | 
|  | Person person = Person(); | 
|  |  | 
|  | print('Enter person ID: '); | 
|  | String input = stdin.readLineSync(); | 
|  | person.id = int.parse(input); | 
|  |  | 
|  | print('Enter name'); | 
|  | person.name = stdin.readLineSync(); | 
|  |  | 
|  | print('Enter email address (blank for none) : '); | 
|  | String email = stdin.readLineSync(); | 
|  | if (email.isNotEmpty) { | 
|  | person.email = email; | 
|  | } | 
|  |  | 
|  | while (true) { | 
|  | print('Enter a phone number (or leave blank to finish): '); | 
|  | String number = stdin.readLineSync(); | 
|  | if (number.isEmpty) break; | 
|  |  | 
|  | Person_PhoneNumber phoneNumber = Person_PhoneNumber(); | 
|  |  | 
|  | phoneNumber.number = number; | 
|  | print('Is this a mobile, home, or work phone? '); | 
|  |  | 
|  | String type = stdin.readLineSync(); | 
|  | switch (type) { | 
|  | case 'mobile': | 
|  | phoneNumber.type = Person_PhoneType.MOBILE; | 
|  | break; | 
|  | case 'home': | 
|  | phoneNumber.type = Person_PhoneType.HOME; | 
|  | break; | 
|  | case 'work': | 
|  | phoneNumber.type = Person_PhoneType.WORK; | 
|  | break; | 
|  | default: | 
|  | print('Unknown phone type.  Using default.'); | 
|  | } | 
|  | person.phones.add(phoneNumber); | 
|  | } | 
|  |  | 
|  | return person; | 
|  | } | 
|  |  | 
|  | // Reads the entire address book from a file, adds one person based | 
|  | // on user input, then writes it back out to the same file. | 
|  | main(List<String> arguments) { | 
|  | if (arguments.length != 1) { | 
|  | print('Usage: add_person ADDRESS_BOOK_FILE'); | 
|  | exit(-1); | 
|  | } | 
|  |  | 
|  | File file = File(arguments.first); | 
|  | AddressBook addressBook; | 
|  | if (!file.existsSync()) { | 
|  | print('File not found. Creating new file.'); | 
|  | addressBook = AddressBook(); | 
|  | } else { | 
|  | addressBook = AddressBook.fromBuffer(file.readAsBytesSync()); | 
|  | } | 
|  | addressBook.people.add(promptForAddress()); | 
|  | file.writeAsBytes(addressBook.writeToBuffer()); | 
|  | } |