Gallery/lib/home_page.dart

86 lines
2.2 KiB
Dart
Raw Normal View History

2022-09-25 22:12:57 +00:00
import 'package:flutter/material.dart';
import 'package:gallery/data_provider/data_provider.dart';
import 'package:gallery/image_grid.dart';
2022-09-25 22:12:57 +00:00
import 'data_provider/local_data_provider.dart';
import 'data_provider/ssh_data_provider.dart';
2022-09-25 22:12:57 +00:00
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
enum Page { local, remote }
2022-09-25 22:12:57 +00:00
class _MyHomePageState extends State<MyHomePage> {
Page page = Page.local;
2022-09-25 22:12:57 +00:00
Widget _buildPage() {
DataProvider provider;
2022-09-25 22:12:57 +00:00
switch (page) {
case Page.local:
provider = LocalDataProvider("/home");
break;
case Page.remote:
// todo do not generate a new provider on each tab switch
provider = SSHDataProvider(
initialPath: "/", host: "", password: "", port: 0, username: "");
break;
}
return ImageGrid(dProvider: provider);
2022-09-25 22:12:57 +00:00
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: _buildPage(),
drawer: Drawer(
child: ListView(
padding: EdgeInsets.zero,
children: [
DrawerHeader(
decoration: BoxDecoration(
color: Theme.of(context).primaryColor,
2022-09-25 22:12:57 +00:00
),
child: const Text('Gallery'),
),
ListTile(
title: const Text('Local'),
onTap: () {
setState(() {
page = Page.local;
});
2022-09-25 22:12:57 +00:00
},
),
ListTile(
title: const Text('Remote'),
onTap: () {
setState(() {
page = Page.remote;
});
},
),
],
),
2022-09-25 22:12:57 +00:00
),
// floatingActionButton: FloatingActionButton(
// onPressed: () {
// // _controller.animateTo(.0,
// // duration: const Duration(milliseconds: 400),
// // curve: Curves.easeInOutQuad);
// },
// tooltip: 'Increment',
// child: const Icon(Icons.arrow_upward),
// ),
2022-09-25 22:12:57 +00:00
);
}
}