draggable_home 1.0.5 draggable_home: ^1.0.5 copied to clipboard
Draggable is a library for adding a beautiful draggable home page
import 'package:draggable_home/draggable_home.dart';
import 'package:flutter/material.dart';
import 'camera_preview.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) => const MaterialApp(
title: "Draggable Home",
home: HomePage(),
);
}
class HomePage extends StatelessWidget {
const HomePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return DraggableHome(
leading: const Icon(Icons.arrow_back_ios),
title: const Text("Draggable Home"),
actions: [
IconButton(onPressed: () {}, icon: const Icon(Icons.settings)),
],
headerWidget: headerWidget(context),
headerBottomBar: headerBottomBarWidget(),
body: [
listView(),
],
fullyStretchable: true,
expandedBody: const CameraPreview(),
backgroundColor: Colors.white,
appBarColor: Colors.teal,
);
}
Row headerBottomBarWidget() {
return const Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Icon(
Icons.settings,
color: Colors.white,
),
],
);
}
Widget headerWidget(BuildContext context) {
return Container(
color: Colors.blue,
child: Center(
child: Text(
"Title",
style: Theme.of(context)
.textTheme
.displayMedium!
.copyWith(color: Colors.white70),
),
),
);
}
ListView listView() {
return ListView.builder(
padding: const EdgeInsets.only(top: 0),
physics: const NeverScrollableScrollPhysics(),
itemCount: 20,
shrinkWrap: true,
itemBuilder: (context, index) => Card(
color: Colors.white70,
child: ListTile(
leading: CircleAvatar(
child: Text("$index"),
),
title: const Text("Title"),
subtitle: const Text("Subtitle"),
),
),
);
}
}