Skip to content

Commit 6abf7b5

Browse files
committed
feat(WordCardOverView): add force column setting
Signed-off-by: OctagonalStar <[email protected]>
1 parent b06327a commit 6abf7b5

File tree

1 file changed

+61
-3
lines changed

1 file changed

+61
-3
lines changed

lib/sub_pages_builder/learning_pages/learning_pages_build.dart

Lines changed: 61 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -573,13 +573,71 @@ class _WordCardOverViewPage extends State<WordCardOverViewPage> {
573573
ScrollController classController = ScrollController();
574574
bool allowJsonScorll = true;
575575
bool allowClassScorll = false;
576+
int forceColumn = 0;
576577

577578
@override
578579
Widget build(BuildContext context) {
579580
MediaQueryData mediaQuery = MediaQuery.of(context);
580581
return Scaffold(
581582
appBar: AppBar(
582583
title: Text("单词总览"),
584+
actions: [
585+
IconButton(
586+
onPressed: () async {
587+
await showDialog(
588+
context: context,
589+
builder: (context) {
590+
return AlertDialog(
591+
content: Column(
592+
mainAxisSize: MainAxisSize.min,
593+
children: [
594+
StatefulBuilder(
595+
builder: (context, setLocalState) {
596+
return Row(
597+
mainAxisSize: MainAxisSize.min,
598+
children: [
599+
Text("设置固定列数"),
600+
Slider(
601+
min: 0,
602+
max: 5,
603+
divisions: 5,
604+
value: forceColumn.toDouble(),
605+
onChanged: (value){
606+
setLocalState(() {
607+
forceColumn = value.ceil();
608+
});
609+
}
610+
),
611+
SizedBox(width: 60, child: Text(forceColumn == 0 ? "0(自动)" : forceColumn.toString()))
612+
],
613+
);
614+
}
615+
),
616+
],
617+
),
618+
actions: [
619+
ElevatedButton(
620+
onPressed: (){
621+
Navigator.pop(context);
622+
setState(() {}); // 刷新全局状态
623+
},
624+
child: Text("确认")
625+
),
626+
ElevatedButton(
627+
onPressed: (){
628+
Navigator.pop(context);
629+
},
630+
child: Text("取消")
631+
)
632+
],
633+
);
634+
}
635+
);
636+
637+
},
638+
icon: Icon(Icons.view_column)
639+
)
640+
],
583641
),
584642
body: ListView.builder(
585643
physics: allowJsonScorll ? null : NeverScrollableScrollPhysics(),
@@ -648,15 +706,15 @@ class _WordCardOverViewPage extends State<WordCardOverViewPage> {
648706
height: mediaQuery.size.height * 0.8,
649707
child: GridView.builder(
650708
itemCount: context.read<Global>().wordData["Classes"][jsonName][className].length,
651-
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: mediaQuery.size.width ~/ 300),
709+
gridDelegate: forceColumn == 0 ? SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: mediaQuery.size.width ~/ 300) : SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: forceColumn),
652710
itemBuilder: (context, index) {
653711
return Container(
654712
margin: EdgeInsets.all(8.0),
655713
child: WordCard(
656714
word: context.read<Global>().wordData["Words"][context.read<Global>().wordData["Classes"][jsonName][className][index]],
657715
useMask: false,
658-
width: mediaQuery.size.width / (mediaQuery.size.width ~/ 300),
659-
height: mediaQuery.size.width / (mediaQuery.size.width ~/ 300),
716+
width: mediaQuery.size.width / (forceColumn == 0 ? (mediaQuery.size.width ~/ 300) : forceColumn),
717+
height: mediaQuery.size.width / (forceColumn == 0 ? (mediaQuery.size.width ~/ 300) : forceColumn),
660718
),
661719
);
662720
}

0 commit comments

Comments
 (0)