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