settings: scrollable access grant list

This commit is contained in:
Thibault Deckers 2021-07-07 15:23:04 +09:00
parent 15857ccc9f
commit 876b2af432

View file

@ -52,21 +52,6 @@ class _StorageAccessPageState extends State<StorageAccessPage> {
title: Text(context.l10n.settingsStorageAccessTitle), title: Text(context.l10n.settingsStorageAccessTitle),
), ),
body: SafeArea( body: SafeArea(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
child: Row(
children: [
const Icon(AIcons.info),
const SizedBox(width: 16),
Expanded(child: Text(context.l10n.settingsStorageAccessBanner)),
],
),
),
const Divider(),
Expanded(
child: FutureBuilder<List<String>>( child: FutureBuilder<List<String>>(
future: _pathLoader, future: _pathLoader,
builder: (context, snapshot) { builder: (context, snapshot) {
@ -78,14 +63,28 @@ class _StorageAccessPageState extends State<StorageAccessPage> {
} }
_lastPaths = snapshot.data!..sort(); _lastPaths = snapshot.data!..sort();
if (_lastPaths!.isEmpty) { if (_lastPaths!.isEmpty) {
return EmptyContent(
text: context.l10n.settingsStorageAccessEmpty,
);
}
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: _lastPaths! children: [
.map((path) => ListTile( const _Header(),
const Divider(),
Expanded(
child: Padding(
padding: const EdgeInsets.all(8),
child: EmptyContent(
text: context.l10n.settingsStorageAccessEmpty,
),
),
),
],
);
}
return ListView(
children: [
const _Header(),
const Divider(),
..._lastPaths!.map((path) => ListTile(
title: Text(path), title: Text(path),
dense: true, dense: true,
trailing: IconButton( trailing: IconButton(
@ -97,14 +96,28 @@ class _StorageAccessPageState extends State<StorageAccessPage> {
}, },
tooltip: context.l10n.settingsStorageAccessRevokeTooltip, tooltip: context.l10n.settingsStorageAccessRevokeTooltip,
), ),
)) )),
.toList(), ],
); );
}, }),
), ),
), );
}
}
class _Header extends StatelessWidget {
const _Header({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
child: Row(
children: [
const Icon(AIcons.info),
const SizedBox(width: 16),
Expanded(child: Text(context.l10n.settingsStorageAccessBanner)),
], ],
),
), ),
); );
} }