forked from protocolbuffers/protobuf
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request protocolbuffers#5261 from szakarias/dartExample
Add Dart example.
- Loading branch information
Showing
5 changed files
with
156 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
import 'dart:io'; | ||
|
||
import 'dart_tutorial/addressbook.pb.dart'; | ||
|
||
// This function fills in a Person message based on user input. | ||
Person promtForAddress() { | ||
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(promtForAddress()); | ||
file.writeAsBytes(addressBook.writeToBuffer()); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
import 'dart:io'; | ||
|
||
import 'dart_tutorial/addressbook.pb.dart'; | ||
import 'dart_tutorial/addressbook.pbenum.dart'; | ||
|
||
// Iterates though all people in the AddressBook and prints info about them. | ||
void printAddressBook(AddressBook addressBook) { | ||
for (Person person in addressBook.people) { | ||
print('Person ID: ${person.id}'); | ||
print(' Name: ${person.name}'); | ||
if (person.hasEmail()) { | ||
print(' E-mail address:${person.email}'); | ||
} | ||
|
||
for (Person_PhoneNumber phoneNumber in person.phones) { | ||
switch (phoneNumber.type) { | ||
case Person_PhoneType.MOBILE: | ||
print(' Mobile phone #: '); | ||
break; | ||
case Person_PhoneType.HOME: | ||
print(' Home phone #: '); | ||
break; | ||
case Person_PhoneType.WORK: | ||
print(' Work phone #: '); | ||
break; | ||
default: | ||
print(' Unknown phone #: '); | ||
break; | ||
} | ||
print(phoneNumber.number); | ||
} | ||
} | ||
} | ||
|
||
// Reads the entire address book from a file and prints all | ||
// the information inside. | ||
main(List<String> arguments) { | ||
if (arguments.length != 1) { | ||
print('Usage: list_person ADDRESS_BOOK_FILE'); | ||
exit(-1); | ||
} | ||
|
||
// Read the existing address book. | ||
File file = new File(arguments.first); | ||
AddressBook addressBook = new AddressBook.fromBuffer(file.readAsBytesSync()); | ||
printAddressBook(addressBook); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
name: addressbook | ||
description: dartlang.org example code. | ||
|
||
dependencies: | ||
protobuf: |