mirror of
https://github.com/qinglong-app/qinglong_app.git
synced 2025-10-09 16:48:19 +08:00
add homepage
This commit is contained in:
0
lib/module/a.dart
Normal file
0
lib/module/a.dart
Normal file
15
lib/module/config/config_page.dart
Normal file
15
lib/module/config/config_page.dart
Normal file
@@ -0,0 +1,15 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class ConfigPage extends StatefulWidget {
|
||||
const ConfigPage({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_ConfigPageState createState() => _ConfigPageState();
|
||||
}
|
||||
|
||||
class _ConfigPageState extends State<ConfigPage> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold();
|
||||
}
|
||||
}
|
||||
16
lib/module/env/env_page.dart
vendored
Normal file
16
lib/module/env/env_page.dart
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class EnvPage extends StatefulWidget {
|
||||
const EnvPage({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_EnvPageState createState() => _EnvPageState();
|
||||
}
|
||||
|
||||
class _EnvPageState extends State<EnvPage> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold();
|
||||
}
|
||||
}
|
||||
117
lib/module/home/home_page.dart
Normal file
117
lib/module/home/home_page.dart
Normal file
@@ -0,0 +1,117 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:qinglong_app/base/ql_app_bar.dart';
|
||||
import 'package:qinglong_app/base/theme.dart';
|
||||
import 'package:qinglong_app/module/config/config_page.dart';
|
||||
import 'package:qinglong_app/module/env/env_page.dart';
|
||||
import 'package:qinglong_app/module/others/other_page.dart';
|
||||
import 'package:qinglong_app/module/task/task_page.dart';
|
||||
|
||||
class HomePage extends StatefulWidget {
|
||||
const HomePage({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_HomePageState createState() => _HomePageState();
|
||||
}
|
||||
|
||||
class _HomePageState extends State<HomePage> {
|
||||
int _index = 0;
|
||||
String _title = "";
|
||||
|
||||
List<IndexBean> titles = [];
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
initTitles();
|
||||
_title = titles[0].title;
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: QlAppBar(
|
||||
canBack: false,
|
||||
title: _title,
|
||||
actions: [
|
||||
Consumer(builder: (context, ref, child) {
|
||||
return InkWell(
|
||||
onTap: () {
|
||||
ref.read(themeProvider).changeTheme();
|
||||
},
|
||||
child: Center(child: Text("改变主题")),
|
||||
);
|
||||
}),
|
||||
],
|
||||
),
|
||||
body: IndexedStack(
|
||||
index: _index,
|
||||
children: const [
|
||||
TaskPage(),
|
||||
EnvPage(),
|
||||
ConfigPage(),
|
||||
OtherPage(),
|
||||
],
|
||||
),
|
||||
bottomNavigationBar: BottomNavigationBar(
|
||||
items: titles
|
||||
.map(
|
||||
(e) => BottomNavigationBarItem(
|
||||
icon: Icon(e.icon),
|
||||
activeIcon: Icon(e.checkedIcon),
|
||||
label: e.title,
|
||||
),
|
||||
)
|
||||
.toList(),
|
||||
currentIndex: _index,
|
||||
onTap: (index) {
|
||||
_index = index;
|
||||
_title = titles[index].title;
|
||||
setState(() {});
|
||||
},
|
||||
type: BottomNavigationBarType.fixed,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void initTitles() {
|
||||
titles.clear();
|
||||
titles.add(
|
||||
IndexBean(
|
||||
CupertinoIcons.timer,
|
||||
CupertinoIcons.timer_fill,
|
||||
"定时任务",
|
||||
),
|
||||
);
|
||||
titles.add(
|
||||
IndexBean(
|
||||
CupertinoIcons.hammer,
|
||||
CupertinoIcons.hammer_fill,
|
||||
"环境变量",
|
||||
),
|
||||
);
|
||||
titles.add(
|
||||
IndexBean(
|
||||
CupertinoIcons.settings,
|
||||
CupertinoIcons.settings_solid,
|
||||
"配置文件",
|
||||
),
|
||||
);
|
||||
titles.add(
|
||||
IndexBean(
|
||||
CupertinoIcons.cube,
|
||||
CupertinoIcons.cube_fill,
|
||||
"其他",
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class IndexBean {
|
||||
IconData icon;
|
||||
IconData checkedIcon;
|
||||
String title;
|
||||
|
||||
IndexBean(this.icon, this.checkedIcon, this.title);
|
||||
}
|
||||
15
lib/module/others/other_page.dart
Normal file
15
lib/module/others/other_page.dart
Normal file
@@ -0,0 +1,15 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class OtherPage extends StatefulWidget {
|
||||
const OtherPage({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_OtherPageState createState() => _OtherPageState();
|
||||
}
|
||||
|
||||
class _OtherPageState extends State<OtherPage> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold();
|
||||
}
|
||||
}
|
||||
33
lib/module/task/task_page.dart
Normal file
33
lib/module/task/task_page.dart
Normal file
@@ -0,0 +1,33 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:qinglong_app/base/base_state_widget.dart';
|
||||
import 'package:qinglong_app/module/task/task_viewmodel.dart';
|
||||
|
||||
class TaskPage extends StatefulWidget {
|
||||
const TaskPage({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_TaskPageState createState() => _TaskPageState();
|
||||
}
|
||||
|
||||
class _TaskPageState extends State<TaskPage> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BaseStateWidget<TaskViewModel>(
|
||||
builder: (context, model, child) {
|
||||
return ListView.builder(
|
||||
itemBuilder: (context, index) {
|
||||
return ListTile(
|
||||
title: Text(model.list[index]),
|
||||
);
|
||||
},
|
||||
itemCount: model.list.length,
|
||||
);
|
||||
},
|
||||
model: taskProvider,
|
||||
onReady: (viewModel) {
|
||||
viewModel.loadData();
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
31
lib/module/task/task_viewmodel.dart
Normal file
31
lib/module/task/task_viewmodel.dart
Normal file
@@ -0,0 +1,31 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:qinglong_app/base/base_viewmodel.dart';
|
||||
|
||||
var taskProvider = ChangeNotifierProvider((ref) => TaskViewModel());
|
||||
|
||||
class TaskViewModel extends BaseViewModel {
|
||||
List<String> list = [];
|
||||
|
||||
void loadData() {
|
||||
loading(notify: true);
|
||||
|
||||
Future.delayed(Duration(seconds: 2), () {
|
||||
list.add("sdfsf");
|
||||
list.add("sdfsf");
|
||||
list.add("sdfsf");
|
||||
list.add("sdfsf");
|
||||
list.add("sdfsf");
|
||||
list.add("sdfsf");
|
||||
list.add("sdfsf");
|
||||
list.add("sdfsf");
|
||||
list.add("sdfsf");
|
||||
list.add("sdfsf");
|
||||
list.add("sdfsf");
|
||||
list.add("sdfsf");
|
||||
list.add("sdfsf");
|
||||
list.add("sdfsf");
|
||||
list.add("sdfsf");
|
||||
success();
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user