blob: fef9d83e4c8749d5df18cbdf38d70520f8a60ec4 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:package_info/package_info.dart';
void main() {
runApp(new MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'PackageInfo Demo',
theme: new ThemeData(primarySwatch: Colors.blue),
home: new MyHomePage(title: 'PackageInfo example app'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
PackageInfo _packageInfo = new PackageInfo(
packageName: 'Unknown',
version: 'Unknown',
buildNumber: 'Unknown',
);
@override
void initState() {
super.initState();
_initPackageInfo();
}
Future<Null> _initPackageInfo() async {
final PackageInfo info = await PackageInfo.fromPlatform();
setState(() {
_packageInfo = info;
});
}
Widget _infoTile(String title, String subtitle) {
return new ListTile(
title: new Text(title),
subtitle: new Text(subtitle ?? 'Not set'),
);
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
_infoTile('Package name', _packageInfo.packageName),
_infoTile('App version', _packageInfo.version),
_infoTile('Build number', _packageInfo.buildNumber),
],
),
);
}
}