This commit is contained in:
toly
2023-10-19 21:51:44 +08:00
parent 75690361b3
commit d518b3c58a
44 changed files with 1496 additions and 10 deletions

View File

@@ -1,89 +0,0 @@
import 'package:flutter/material.dart';
import 'package:toly_menu/toly_menu.dart';
import '../../menus.dart';
class App extends StatelessWidget {
const App({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
appBarTheme: const AppBarTheme(
elevation: 0,
iconTheme: IconThemeData(color: Colors.black),
titleTextStyle: TextStyle(
color: Colors.black,
fontSize: 18,
fontWeight: FontWeight.bold,
))),
debugShowCheckedModeBanner: false,
home: AppLayout());
}
}
class AppLayout extends StatelessWidget {
const AppLayout({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: Row(
children: [
SizedBox(
width: 210,
child: MenuPanel(),
),
// Container()
],
),
// appBar: AppToolBar(),
// body: AppNavigation(),
);
}
}
class MenuPanel extends StatefulWidget {
const MenuPanel({super.key});
@override
State<MenuPanel> createState() => _MenuPanelState();
}
class _MenuPanelState extends State<MenuPanel> {
MenuState state = MenuState(expandMenus: ['/dashboard'], activeMenu: '/dashboard/data_analyse', items: menus);
@override
Widget build(BuildContext context) {
return TolyMenu(state: state, onSelect: _onSelect);
}
void _onSelect(MenuData menu) {
if(menu.isLeaf){
state = state.copyWith(activeMenu: menu.path);
}else{
List<String> menus = [];
String path = menu.path.substring(1);
List<String> parts = path.split('/');
if(parts.isNotEmpty){
String path = '';
for (String part in parts) {
path+='/$part';
menus.add(path);
}
}
if(state.expandMenus.contains(menu.path)){
menus.remove(menu.path);
}
state = state.copyWith(expandMenus: menus);
}
setState(() {
});
}
}

View File

@@ -1,43 +0,0 @@
import 'package:flutter/material.dart';
class RootContent extends StatelessWidget {
const RootContent({super.key});
@override
Widget build(BuildContext context) {
return Router(routerDelegate: RootContentDelegate());
}
}
class RootContentDelegate extends RouterDelegate with ChangeNotifier,PopNavigatorRouterDelegateMixin{
@override
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
@override
Widget build(BuildContext context) {
return Navigator(
key: navigatorKey,
pages: [
],
onPopPage: (route, result) {
// appState.selectedBook = null;
// notifyListeners();
return route.didPop(result);
},
);
}
@override
Future<void> setNewRoutePath(configuration) {
// TODO: implement setNewRoutePath
throw UnimplementedError();
}
}

View File

@@ -0,0 +1,52 @@
import 'package:flutter/material.dart';
import 'package:iroute/common/components/colors_panel.dart';
import 'package:iroute/common/pages/stl_color_page.dart';
// class HomePage extends StatelessWidget {
// const HomePage({super.key});
//
// @override
// Widget build(BuildContext context) {
// return Scaffold(
// body: const Center(child: Text('HomePage')));
// }
// }
class ColorPage extends StatefulWidget {
const ColorPage({super.key});
@override
State<ColorPage> createState() => _ColorPageState();
}
class _ColorPageState extends State<ColorPage> {
final List<Color> _colors = [
Colors.red, Colors.black, Colors.blue, Colors.green, Colors.orange,
Colors.pink, Colors.purple, Colors.indigo, Colors.amber, Colors.cyan,
Colors.redAccent, Colors.grey, Colors.blueAccent, Colors.greenAccent, Colors.orangeAccent,
Colors.pinkAccent, Colors.purpleAccent, Colors.indigoAccent, Colors.amberAccent, Colors.cyanAccent,
];
@override
Widget build(BuildContext context) {
return Scaffold(
// appBar: AppBar(title:const Text('颜色主页')),
floatingActionButton: FloatingActionButton(
onPressed: _toAddPage,
child: const Icon(Icons.add),
),
body: ColorsPanel(
colors: _colors,
onSelect: _selectColor,
),
);
}
void _selectColor(Color color){
// String value = color.value.toRadixString(16);
}
void _toAddPage() async {
}
}

View File

@@ -0,0 +1,43 @@
import 'package:flutter/material.dart';
class CounterPage extends StatefulWidget {
const CounterPage({super.key});
@override
State<CounterPage> createState() => _CounterPageState();
}
class _CounterPageState extends State<CounterPage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
);
}
}

View File

@@ -0,0 +1,30 @@
import 'package:flutter/material.dart';
class EmptyPage extends StatelessWidget {
const EmptyPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('界面走丢了'),
),
body: Scaffold(
body: Center(
child: Wrap(
spacing: 16,
crossAxisAlignment: WrapCrossAlignment.center,
direction: Axis.vertical,
children: [
Icon(Icons.nearby_error,size: 64, color: Colors.grey),
Text(
'404 界面丢失',
style: TextStyle(fontSize: 24, color: Colors.grey),
),
],
),
),
),
);
}
}

View File

@@ -0,0 +1,11 @@
import 'package:flutter/material.dart';
class SettingPage extends StatelessWidget {
const SettingPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body:Center(child: Text('SettingPage')));
}
}

View File

@@ -0,0 +1,11 @@
import 'package:flutter/material.dart';
class UserPage extends StatelessWidget {
const UserPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body:Center(child: Text('UserPage')));
}
}