added prj editing page, must change to dialog bcz page too big
All checks were successful
Build CI / AMD64 Build (push) Successful in 3m23s
Build CI / ARM64 Build (push) Successful in 7m16s

This commit is contained in:
2026-02-15 19:06:08 +05:30
parent 985d7e5e21
commit ec3e69ffa9
8 changed files with 203 additions and 32 deletions

View File

@@ -21,7 +21,7 @@ class HomePage extends StatelessWidget {
body: Padding(
padding: const EdgeInsets.all(8.0),
child: !gm.importedData
? Container()
? YaruLinearProgressIndicator()
: gm.lenPrj > 0
? LayoutBuilder(
builder: (context, constraints) {

141
lib/views/managePrj.dart Normal file
View File

@@ -0,0 +1,141 @@
import "dart:io";
import "package:flutter/material.dart";
import "package:prod/models/globalModel.dart";
import "package:prod/models/project.dart";
import "package:provider/provider.dart";
class ManageProject extends StatelessWidget {
const ManageProject({super.key});
@override
Widget build(BuildContext context) {
final id = ModalRoute.of(context)?.settings.arguments as int;
GlobalModel gm = Provider.of(context);
final Project prj = gm.nthPrj(id);
TextEditingController nameController = TextEditingController();
TextEditingController pathController = TextEditingController();
TextEditingController langController = TextEditingController();
nameController.text = prj.name;
pathController.text = prj.path.path;
langController.text = prj.language;
return Scaffold(
appBar: AppBar(title: Text("/ PROject Dashboard / Editing ${prj.name} ")),
body: Container(
// constraints: BoxConstraints(maxWidth: 500),
child: CustomScrollView(
slivers: [
SliverAppBar(
// title: gm.isEdited ? Text("Unsaved Changes") : null,
pinned: false,
snap: false,
floating: false,
automaticallyImplyLeading: false,
automaticallyImplyActions: false,
backgroundColor: Colors.transparent,
shape: LinearBorder(),
),
SliverToBoxAdapter(
child: TextField(
style: TextStyle(fontSize: 50),
controller: nameController,
textAlign: .center,
// onEditingComplete: () => gm.updateEdited(true),
decoration: InputDecoration(
border: .none,
enabledBorder: .none,
fillColor: Colors.transparent,
),
),
),
SliverToBoxAdapter(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: TextField(
style: TextStyle(fontSize: 30),
controller: pathController,
textAlign: .center,
// onEditingComplete: () => gm.updateEdited(true),
decoration: InputDecoration(
border: .none,
// enabledBorder: .none,
fillColor: Colors.transparent,
),
),
),
),
SliverToBoxAdapter(
child: TextField(
style: TextStyle(fontSize: 30),
controller: langController,
textAlign: .center,
// onEditingComplete: () => gm.updateEdited(true),
decoration: InputDecoration(
border: .none,
enabledBorder: .none,
fillColor: Colors.transparent,
),
),
),
SliverList.list(
children: [
Row(
children: [
OutlinedButton(
child: Text("Delete"),
onPressed: () {
Navigator.pop(context);
gm.delPrj(id);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("Deleted ${prj.name}"),
duration: Duration(milliseconds: 2350),
),
);
},
),
OutlinedButton(
child: Text("Cancel"),
onPressed: () => Navigator.pop(context),
),
OutlinedButton(
child: Text("Save"),
onPressed: () {
gm.updatePrj(
id,
Project(
nameController.text,
langController.text,
File(pathController.text),
prj.editors,
prj.isGit,
prj.enableTerminal,
),
);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("Updated Project Details"),
duration: Duration(milliseconds: 2500),
),
);
},
// gm.updateEdited(false);
),
],
),
],
),
// SliverList.builder(
// itemCount: 3,
// itemBuilder: (context, index) {
// return Placeholder();
// },
// ),
],
),
),
);
}
}