@@ -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