Added App name data to package_info (#573)

diff --git a/packages/package_info/CHANGELOG.md b/packages/package_info/CHANGELOG.md
index b76030a..0871686 100644
--- a/packages/package_info/CHANGELOG.md
+++ b/packages/package_info/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.3.1
+
+* Added `appName` field to `PackageInfo` for getting the display name of the app.
+
 ## 0.3.0
 
 * **Breaking change**. Set SDK constraints to match the Flutter beta release.
diff --git a/packages/package_info/README.md b/packages/package_info/README.md
index a6e18b8..473bda3 100644
--- a/packages/package_info/README.md
+++ b/packages/package_info/README.md
@@ -13,6 +13,7 @@
 
 PackageInfo packageInfo = await PackageInfo.fromPlatform();
 
+String appName = packageInfo.appName;
 String packageName = packageInfo.packageName;
 String version = packageInfo.version;
 String buildNumber = packageInfo.buildNumber;
@@ -22,6 +23,7 @@
 
 ```dart
 PackageInfo.fromPlatform().then((PackageInfo packageInfo) {
+  String appName = packageInfo.appName;
   String packageName = packageInfo.packageName;
   String version = packageInfo.version;
   String buildNumber = packageInfo.buildNumber;
diff --git a/packages/package_info/android/src/main/java/io/flutter/plugins/packageinfo/PackageInfoPlugin.java b/packages/package_info/android/src/main/java/io/flutter/plugins/packageinfo/PackageInfoPlugin.java
index 5e9f5e3..9c54835 100644
--- a/packages/package_info/android/src/main/java/io/flutter/plugins/packageinfo/PackageInfoPlugin.java
+++ b/packages/package_info/android/src/main/java/io/flutter/plugins/packageinfo/PackageInfoPlugin.java
@@ -35,9 +35,11 @@
     try {
       Context context = mRegistrar.context();
       if (call.method.equals("getAll")) {
-        PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
+        PackageManager pm = context.getPackageManager();
+        PackageInfo info = pm.getPackageInfo(context.getPackageName(), 0);
 
         Map<String, String> map = new HashMap<String, String>();
+        map.put("appName", info.applicationInfo.loadLabel(pm).toString());
         map.put("packageName", context.getPackageName());
         map.put("version", info.versionName);
         map.put("buildNumber", String.valueOf(info.versionCode));
diff --git a/packages/package_info/example/lib/main.dart b/packages/package_info/example/lib/main.dart
index fef9d83..e389c5e 100644
--- a/packages/package_info/example/lib/main.dart
+++ b/packages/package_info/example/lib/main.dart
@@ -33,6 +33,7 @@
 
 class _MyHomePageState extends State<MyHomePage> {
   PackageInfo _packageInfo = new PackageInfo(
+    appName: 'Unknown',
     packageName: 'Unknown',
     version: 'Unknown',
     buildNumber: 'Unknown',
@@ -67,6 +68,7 @@
       body: new Column(
         mainAxisAlignment: MainAxisAlignment.center,
         children: <Widget>[
+          _infoTile('App name', _packageInfo.appName),
           _infoTile('Package name', _packageInfo.packageName),
           _infoTile('App version', _packageInfo.version),
           _infoTile('Build number', _packageInfo.buildNumber),
diff --git a/packages/package_info/ios/Classes/PackageInfoPlugin.m b/packages/package_info/ios/Classes/PackageInfoPlugin.m
index 3e0ac06..3686794 100644
--- a/packages/package_info/ios/Classes/PackageInfoPlugin.m
+++ b/packages/package_info/ios/Classes/PackageInfoPlugin.m
@@ -16,6 +16,7 @@
 - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
   if ([call.method isEqualToString:@"getAll"]) {
     result(@{
+      @"appName" : [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"],
       @"packageName" : [[NSBundle mainBundle] bundleIdentifier],
       @"version" : [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"],
       @"buildNumber" : [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]
diff --git a/packages/package_info/lib/package_info.dart b/packages/package_info/lib/package_info.dart
index 5b0b09b..587fb26 100644
--- a/packages/package_info/lib/package_info.dart
+++ b/packages/package_info/lib/package_info.dart
@@ -18,6 +18,7 @@
 /// ```
 class PackageInfo {
   PackageInfo({
+    this.appName,
     this.packageName,
     this.version,
     this.buildNumber,
@@ -35,6 +36,7 @@
         final Map<dynamic, dynamic> map = result;
 
         completer.complete(new PackageInfo(
+          appName: map["appName"],
           packageName: map["packageName"],
           version: map["version"],
           buildNumber: map["buildNumber"],
@@ -46,6 +48,9 @@
     return _fromPlatform;
   }
 
+  /// The app name. `CFBundleDisplayName` on iOS, `application/label` on Android.
+  final String appName;
+
   /// The package name. `bundleIdentifier` on iOS, `getPackageName` on Android.
   final String packageName;
 
diff --git a/packages/package_info/pubspec.yaml b/packages/package_info/pubspec.yaml
index eaecf9f..f1a8cd4 100644
--- a/packages/package_info/pubspec.yaml
+++ b/packages/package_info/pubspec.yaml
@@ -1,7 +1,7 @@
 name: package_info
 description: Flutter plugin for querying information about the application
   package, such as CFBundleVersion on iOS or versionCode on Android.
-version: 0.3.0
+version: 0.3.1
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/package_info