initial commit

This commit is contained in:
Oliwier Adamczyk
2025-10-05 10:07:06 +02:00
commit 4804732340
150 changed files with 5563 additions and 0 deletions

View File

@@ -0,0 +1,74 @@
import 'package:flutter/material.dart';
import 'package:survive_app/ui/style/colors.dart';
import 'package:survive_app/ui/style/dimensions.dart';
import 'package:survive_app/ui/viewmodel/drag_sheet_viewmodel.dart';
class DragSheet extends StatelessWidget {
final DragSheetViewmodel vm;
const DragSheet({super.key, required this.vm});
@override
Widget build(BuildContext context) {
return DraggableScrollableSheet(
controller: vm.controller,
initialChildSize: 0.45,
minChildSize: 0.3,
maxChildSize: 0.75,
snap: true,
snapSizes: const [0.60],
builder: (context, scrollController) {
return Container(
width: double.infinity,
decoration: const BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(30),
topRight: Radius.circular(30),
),
boxShadow: [
BoxShadow(color: Color.fromARGB(100, 20, 20, 20), blurRadius: 10),
],
),
child: SingleChildScrollView(
child: Padding(
padding: EdgeInsets.all(Margins.medium),
child: Column(
children: [
TextField(
cursorColor: ColorPalette.primary,
decoration: InputDecoration(
suffixIcon: Container(
decoration: BoxDecoration(
color: ColorPalette.secondary,
borderRadius: BorderRadius.all(Radius.circular(100)),
),
child: IconButton(
onPressed: () {},
color: ColorPalette.primary,
icon: Icon(Icons.download, size: 18),
),
),
hintText: "Podaj nazwe punktu orientacyjnego...",
filled: true,
fillColor: ColorPalette.secondary,
focusColor: Colors.transparent,
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.transparent),
borderRadius: BorderRadius.all(Radius.circular(15)),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.transparent),
borderRadius: BorderRadius.all(Radius.circular(15)),
),
),
controller: vm.waypointInputController,
),
],
),
),
),
);
},
);
}
}

View File

@@ -0,0 +1,63 @@
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:survive_app/ui/style/dimensions.dart';
import 'package:survive_app/ui/widget/status_bar_spacer.dart';
class NavDrawer extends StatelessWidget {
const NavDrawer({super.key});
@override
Widget build(BuildContext context) {
return Drawer(
child: ListView(
padding: EdgeInsets.all(Margins.medium),
children: [
StatusBarSpacer(),
NavDrawerElement(
route: "/wikipedia",
icon: Icons.article_outlined,
caption: "Wikipedia",
),
NavDrawerElement(
route: "/resources",
icon: Icons.fastfood_outlined,
caption: "Zasoby",
),
NavDrawerElement(
route: "/guides",
icon: Icons.bookmarks_outlined,
caption: "Poradniki",
),
],
),
);
}
}
class NavDrawerElement extends StatelessWidget {
final String route;
final IconData icon;
final String caption;
const NavDrawerElement({
super.key,
required this.route,
required this.icon,
required this.caption,
});
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () => context.push(route),
child: SizedBox(
child: Row(
children: [
Icon(icon),
Text(caption, style: TextStyle(fontSize: TextSizes.medium)),
],
),
),
);
}
}

View File

@@ -0,0 +1,10 @@
import 'package:flutter/material.dart';
class StatusBarSpacer extends StatelessWidget {
const StatusBarSpacer({super.key});
@override
Widget build(BuildContext context) {
return SizedBox(height: MediaQuery.of(context).padding.top);
}
}