| // 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. |
| |
| // ignore_for_file: public_member_api_docs |
| |
| import 'dart:async'; |
| |
| import 'package:flutter/material.dart'; |
| import 'package:package_info/package_info.dart'; |
| |
| void main() { |
| runApp(MyApp()); |
| } |
| |
| class MyApp extends StatelessWidget { |
| @override |
| Widget build(BuildContext context) { |
| return MaterialApp( |
| title: 'PackageInfo Demo', |
| theme: ThemeData(primarySwatch: Colors.blue), |
| home: MyHomePage(title: 'PackageInfo example app'), |
| ); |
| } |
| } |
| |
| class MyHomePage extends StatefulWidget { |
| MyHomePage({Key? key, required this.title}) : super(key: key); |
| |
| final String title; |
| |
| @override |
| _MyHomePageState createState() => _MyHomePageState(); |
| } |
| |
| class _MyHomePageState extends State<MyHomePage> { |
| PackageInfo _packageInfo = PackageInfo( |
| appName: 'Unknown', |
| packageName: 'Unknown', |
| version: 'Unknown', |
| buildNumber: 'Unknown', |
| ); |
| |
| @override |
| void initState() { |
| super.initState(); |
| _initPackageInfo(); |
| } |
| |
| Future<void> _initPackageInfo() async { |
| final PackageInfo info = await PackageInfo.fromPlatform(); |
| setState(() { |
| _packageInfo = info; |
| }); |
| } |
| |
| Widget _infoTile(String title, String subtitle) { |
| return ListTile( |
| title: Text(title), |
| subtitle: Text(subtitle.isNotEmpty ? subtitle : 'Not set'), |
| ); |
| } |
| |
| @override |
| Widget build(BuildContext context) { |
| return Scaffold( |
| appBar: AppBar( |
| title: Text(widget.title), |
| ), |
| body: 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), |
| ], |
| ), |
| ); |
| } |
| } |