This commit is contained in:
zhutao
2025-09-09 17:57:02 +08:00
parent ccb7d5bb24
commit 3df6e3d49e
22 changed files with 63 additions and 44 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 415 KiB

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

@@ -7,7 +7,6 @@ import 'package:plan/router/routes.dart';
import 'package:plan/theme/theme.dart'; import 'package:plan/theme/theme.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
void main() { void main() {
runApp( runApp(
MultiProvider( MultiProvider(

View File

@@ -54,8 +54,11 @@ class _PlanFormCardState extends State<PlanFormCard> {
controller: _inputController, controller: _inputController,
style: Theme.of(context).textTheme.bodyMedium, style: Theme.of(context).textTheme.bodyMedium,
maxLength: 40, maxLength: 40,
maxLines: 5,
minLines: 1,
expands: false,
decoration: InputDecoration( decoration: InputDecoration(
hintText: "Clean the kitchen", hintText: "Just finished eating and l'm gonna go wash the dishes",
fillColor: Theme.of(context).colorScheme.surfaceContainerLow, fillColor: Theme.of(context).colorScheme.surfaceContainerLow,
filled: true, filled: true,
enabledBorder: OutlineInputBorder( enabledBorder: OutlineInputBorder(

View File

@@ -20,9 +20,9 @@ class _ProfileSectionState extends State<ProfileSection> {
final TextEditingController _inputController = TextEditingController(); final TextEditingController _inputController = TextEditingController();
final List<String> _tips = [ final List<String> _tips = [
"Whenever your coach creates a plan for you, theyll start by looking at this information.", "When your coach makes a plan for you,they'll check this info first.",
"The more details you share, the better your coach can tailor steps that fit your unique situation.", "The more details you toss in,the better your coach can tailor steps to match your totally unique situation.",
"You can also add requests here — for example, I dont eat cilantro.", "You can also let your coach know here,like,Chocolate is a no-go for me 'cause I'm allergic",
]; ];
//防抖 //防抖
@@ -78,7 +78,8 @@ class _ProfileSectionState extends State<ProfileSection> {
style: TextStyle(fontSize: 14, letterSpacing: 1), style: TextStyle(fontSize: 14, letterSpacing: 1),
onChanged: _onTextChanged, onChanged: _onTextChanged,
decoration: InputDecoration( decoration: InputDecoration(
hintText: "Im 19 and always use a dishwasher. Please dont follow the hand-wash disassembly steps.", hintText:
"I'm a busy office worker who relies on a rice cooker every day-could you skip the steps for cooking rice in a regular pot?",
enabledBorder: OutlineInputBorder( enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey), // 普通状态 borderSide: BorderSide(color: Colors.grey), // 普通状态
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),

View File

@@ -1,4 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:plan/page/plan/detail/viewmodel/plan_detail_store.dart';
import 'package:provider/provider.dart';
class DoneStamp extends StatefulWidget { class DoneStamp extends StatefulWidget {
const DoneStamp({super.key}); const DoneStamp({super.key});
@@ -10,30 +12,39 @@ class DoneStamp extends StatefulWidget {
class _DoneStampState extends State<DoneStamp> { class _DoneStampState extends State<DoneStamp> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Align( return Consumer<PlanDetailStore>(
alignment: Alignment(0.7, -0.3), builder: (context, store, _) {
child: Transform.rotate( //是否全部完成
angle: -0.4, bool allDone = store.planDetail.stepsList.every((item) => item.stepStatus == 2);
child: Container( if (!allDone || store.planDetail.stepsList.isEmpty) {
padding: EdgeInsets.symmetric(vertical: 3, horizontal: 5), return Container();
decoration: BoxDecoration( }
borderRadius: BorderRadius.circular(5), return Align(
border: Border.all(color: Colors.red, width: 5), alignment: Alignment(0.7, -0.3),
), child: Transform.rotate(
child: DefaultTextStyle( angle: -0.4,
style: TextStyle(color: Colors.red), child: Container(
child: Column( padding: EdgeInsets.symmetric(vertical: 3, horizontal: 5),
mainAxisSize: MainAxisSize.min, decoration: BoxDecoration(
children: [ borderRadius: BorderRadius.circular(5),
Text( border: Border.all(color: Colors.red, width: 5),
"Completed", ),
style: TextStyle(fontWeight: FontWeight.w700), child: DefaultTextStyle(
style: TextStyle(color: Colors.red),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
"Completed",
style: TextStyle(fontWeight: FontWeight.w700),
),
],
), ),
], ),
), ),
), ),
), );
), },
); );
} }
} }

View File

@@ -162,6 +162,7 @@ class PlanDetailStore extends ChangeNotifier {
steps: planDetail.stepsList, steps: planDetail.stepsList,
suggestions: planDetail.suggestionsList, suggestions: planDetail.suggestionsList,
); );
planContent = "";
await getPlanDetail(); await getPlanDetail();
EasyLoading.showToast("Plan created!"); EasyLoading.showToast("Plan created!");
} }

View File

@@ -12,24 +12,28 @@ class CoachMessage extends StatefulWidget {
class _CoachMessageState extends State<CoachMessage> { class _CoachMessageState extends State<CoachMessage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var store = context.read<PlanDetailStore>(); return Selector<PlanDetailStore, String>(
if (store.planContent.isEmpty) { selector: (_, store) => store.planContent,
return SizedBox(); builder: (context, planContent, _) {
} if (planContent.isEmpty) {
return Container( return SizedBox();
padding: EdgeInsets.all(20), }
child: Column( return Container(
children: [ padding: EdgeInsets.all(20),
Text( child: Column(
"Organizing your plan…", children: [
style: Theme.of(context).textTheme.bodyMedium, Text(
"Organizing your plan…",
style: Theme.of(context).textTheme.bodyMedium,
),
Text(
'"$planContent"',
style: Theme.of(context).textTheme.titleMedium,
),
],
), ),
Text( );
'"${store.planContent}"', },
style: Theme.of(context).textTheme.titleMedium,
),
],
),
); );
} }
} }