diff options
| author | Akshay Nair <phenax5@gmail.com> | 2020-06-02 22:17:22 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2020-06-02 22:17:22 +0530 |
| commit | c285f8e733d448555209f95fd76eedbeef5d9e24 (patch) | |
| tree | e28137a9fa79ba4c8e721df9877d0ee4671f4973 /lib | |
| parent | c60b58a16662fb33121e94b05cc1c868d8f3f16d (diff) | |
| download | daft-launcher-c285f8e733d448555209f95fd76eedbeef5d9e24.tar.gz daft-launcher-c285f8e733d448555209f95fd76eedbeef5d9e24.zip | |
Adds application list component in apps view
Diffstat (limited to '')
| -rw-r--r-- | lib/components/AppList.dart | 33 | ||||
| -rw-r--r-- | lib/components/FixedContainer.dart | 34 | ||||
| -rw-r--r-- | lib/components/SearchableAppList.dart | 41 | ||||
| -rw-r--r-- | lib/pages/Apps.dart | 26 | ||||
| -rw-r--r-- | lib/pages/Home.dart | 32 |
5 files changed, 143 insertions, 23 deletions
diff --git a/lib/components/AppList.dart b/lib/components/AppList.dart index e69de29..5b54b04 100644 --- a/lib/components/AppList.dart +++ b/lib/components/AppList.dart @@ -0,0 +1,33 @@ +import 'package:flutter/material.dart'; +import 'package:device_apps/device_apps.dart'; + +class AppList extends StatelessWidget { + List<Application> appList; + void Function(Application) openApp; + void Function(Application) openOptionsMenu; + + AppList({ this.appList, this.openApp, this.openOptionsMenu }): super(); + + @override + Widget build(BuildContext ctx) { + return ListView.builder( + itemCount: appList.length, + itemBuilder: (ctx, index) { + Application app = appList[index]; + return Column( + children: [ + ListTile( + contentPadding: const EdgeInsets.symmetric(vertical: 0.0, horizontal: 16.0), + dense: true, + title: Text('${app.appName}', style: const TextStyle(fontSize: 16)), + onTap: () => openApp(app), + onLongPress: () => openOptionsMenu(app), + ), + Divider(height: 1.0), + ], + ); + }, + ); + } +} + diff --git a/lib/components/FixedContainer.dart b/lib/components/FixedContainer.dart new file mode 100644 index 0000000..99db1c8 --- /dev/null +++ b/lib/components/FixedContainer.dart @@ -0,0 +1,34 @@ +import 'package:flutter/material.dart'; +import 'package:device_apps/device_apps.dart'; + +import '../components/AppList.dart'; + +class FixedContainer extends StatelessWidget { + EdgeInsets padding; + Widget child; + + FixedContainer({ this.padding, this.child }): super(); + + @override + Widget build(BuildContext ctx) { + return LayoutBuilder( + builder: (BuildContext context, BoxConstraints viewportConstraints) { + return SingleChildScrollView( + child: ConstrainedBox( + constraints: BoxConstraints( + minHeight: viewportConstraints.maxHeight, + ), + child: IntrinsicHeight( + child: Container( + padding: padding, + height: viewportConstraints.maxHeight, + child: child, + ) + ), + ), + ); + } + ); + } +} + diff --git a/lib/components/SearchableAppList.dart b/lib/components/SearchableAppList.dart index e69de29..8f9da2f 100644 --- a/lib/components/SearchableAppList.dart +++ b/lib/components/SearchableAppList.dart @@ -0,0 +1,41 @@ +import 'package:flutter/material.dart'; +import 'package:device_apps/device_apps.dart'; + +import 'AppList.dart'; + +class SearchableAppList extends StatelessWidget { + Future<List<Application>> appListF; + void Function(Application) openApp; + void Function(Application) openOptionsMenu; + + SearchableAppList({ this.appListF, this.openApp, this.openOptionsMenu }): super(); + + int _appSorter(Application a, Application b) { + return a.appName.compareTo(b.appName); + } + + @override + Widget build(BuildContext ctx) { + return Column( + children: [ + Text('My text input'), + Expanded(child: FutureBuilder( + future: appListF, + builder: (ctx, AsyncSnapshot<List<Application>> snap) { + if (!snap.hasData) { + return Text('Loading...'); + } + + snap.data.sort(_appSorter); + return AppList( + appList: snap.data, + openApp: openApp, + openOptionsMenu: openOptionsMenu, + ); + } + )), + ], + ); + } +} + diff --git a/lib/pages/Apps.dart b/lib/pages/Apps.dart index 3322c0b..7252aae 100644 --- a/lib/pages/Apps.dart +++ b/lib/pages/Apps.dart @@ -1,9 +1,33 @@ import 'package:flutter/material.dart'; +import 'package:device_apps/device_apps.dart'; + +import '../components/FixedContainer.dart'; +import '../components/SearchableAppList.dart'; class AppsView extends StatelessWidget { + Future<List<Application>> appListF = DeviceApps.getInstalledApplications( + includeSystemApps: false, + onlyAppsWithLaunchIntent: true, + ); + + void openApp(Application app) { + DeviceApps.openApp(app.packageName); + } + + void openOptionsMenu(Application app) { + debugPrint('Wow'); + } + @override Widget build(BuildContext ctx) { - return Text('Apps'); + return FixedContainer( + padding: const EdgeInsets.symmetric(vertical: 36.0, horizontal: 16.0), + child: SearchableAppList( + appListF: appListF, + openApp: openApp, + openOptionsMenu: openOptionsMenu, + ), + ); } } diff --git a/lib/pages/Home.dart b/lib/pages/Home.dart index 4d28e29..1f4b473 100644 --- a/lib/pages/Home.dart +++ b/lib/pages/Home.dart @@ -2,6 +2,8 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; +import '../components/FixedContainer.dart'; + class StatusInfoCard extends StatelessWidget { Stream<DateTime> time$; DateTime defaultTime; @@ -62,28 +64,14 @@ class HomeView extends StatelessWidget { @override Widget build(BuildContext ctx) { - return LayoutBuilder( - builder: (BuildContext context, BoxConstraints viewportConstraints) { - return SingleChildScrollView( - child: ConstrainedBox( - constraints: BoxConstraints( - minHeight: viewportConstraints.maxHeight, - ), - child: IntrinsicHeight( - child: Container( - padding: const EdgeInsets.symmetric(vertical: 36.0, horizontal: 16.0), - height: viewportConstraints.maxHeight, - child: Column( - children: [ - StatusInfoCard(time$, defaultTime: defaultTime), - Expanded(child: Text('Content')), - ], - ), - ) - ), - ), - ); - } + return FixedContainer( + padding: const EdgeInsets.symmetric(vertical: 36.0, horizontal: 16.0), + child: Column( + children: [ + StatusInfoCard(time$, defaultTime: defaultTime), + Expanded(child: Text('Content')), + ], + ) ); } } |
