你可以尝试将RiveAnimation.asset()包装在一个容器中,并使用Expanded或Flexible来调整其大小,这样可以解决RenderRepaintBoundary does not meet its constraints的问题。另外,你也可以尝试将ListView替换为Column并使用SingleChildScrollView来解决RenderSemanticsGestureHandler does not meet its constraints和RenderPointerListener does not meet its constraints的问题。以下是改进后的代码:

child: SideMenu( background: Global.home_currentcolor, key: _sideMenuKey, menu: SingleChildScrollView( padding: const EdgeInsets.symmetric(vertical: 50.0), child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( height: MediaQuery.of(context).size.width * 0.5, child: FittedBox( fit: BoxFit.contain, child: RiveAnimation.asset( 'assets/cat.riv', animations: ['Sulamine'], controllers: [_controller3], ), ), ), SizedBox(height: 20.0), Padding( padding: const EdgeInsets.only(left: 16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ TextButton( onPressed: () => Global().getrecently(context), child: Text( shijian(), style: TextStyle(color: Colors.white), ), ), SizedBox(height: 20.0), ], ), ), Column( children: [ ListTile( leading: const Icon(Icons.cached, size: 20.0, color: Colors.white), title: Text( '查看成绩', style: TextStyle( color: Colors.white, fontSize: 20, fontWeight: FontWeight.bold), ), onTap: () => Navigator.of(context).push( MaterialPageRoute( builder: (context) => scorepage(), ), ), ), ListTile( leading: const Icon(Icons.score_outlined, size: 20.0, color: Colors.white), title: Text( 'chatgpt', style: TextStyle( color: Colors.white, fontSize: 20, fontWeight: FontWeight.bold), ), onTap: () { Navigator.of(context).pop(); //关闭侧边栏

              Navigator.push(
                  context,
                  MaterialPageRoute(
                      builder: (context) => chat_gpt()));
            }),
        ListTile(
          leading: const Icon(Icons.book_online,
              size: 20.0, color: Colors.white),
          title: Text(
            '一键评教',
            style: TextStyle(
                color: Colors.white,
                fontSize: 20,
                fontWeight: FontWeight.bold),
          ),
          onTap: () {
            Navigator.of(context).pop(); //关闭侧边栏
            Global()
                .No_perception_login()
                .then((value) => null);
            Navigator.push(
                context,
                MaterialPageRoute(
                    builder: (context) => pingjiao()));
          },
        ),
        ListTile(
          leading: const Icon(Icons.book_online,
              size: 20.0, color: Colors.white),
          title: Text(
            '请假历史',
            style: TextStyle(
                color: Colors.white,
                fontSize: 20,
                fontWeight: FontWeight.bold),
          ),
          onTap: () {
            Navigator.of(context).pop(); //关闭侧边栏
            Global()
                .No_perception_login()
                .then((value) => null);
            Navigator.push(
                context,
                MaterialPageRoute(
                    builder: (context) => qingjia()));
          },
        ),
        ListTile(
          leading: const Icon(Icons.colorize,
              size: 20.0, color: Colors.white),
          title: Text(
            '调个色',
            style: TextStyle(
                color: Colors.white,
                fontSize: 20,
                fontWeight: FontWeight.bold),
          ),
          onTap: () {
            showDialog(
                context: context,
                builder: (context) {
                  return MaterialApp(
                      theme: ThemeData.light(),
                      darkTheme: ThemeData.dark(),
                      home: AlertDialog(
                        title: Text('选择当前页颜色'),
                        content: SingleChildScrollView(
                          child: ColorPicker(
                            pickerColor:
                                Global.home_currentcolor,
                            onColorChanged: changeColor,
                            colorPickerWidth: 300.0,
                            pickerAreaHeightPercent: 0.7,
                            enableAlpha: false,
                            displayThumbColor: true,
                            showLabel: true,
                            paletteType: PaletteType.hsv,
                            pickerAreaBorderRadius:
                                const BorderRadius.only(
                              topLeft: const Radius.circular(
                                  2.0),
                              topRight: const Radius.circular(
                                  2.0),
                            ),
                          ),
                        ),
                        actions: <Widget>[
                          TextButton(
                            child: const Text('确定'),
                            onPressed: () async {
                              setState(() =>
                                  Global.home_currentcolor =
                                      Global.home_pickcolor);
                              getApplicationDocumentsDirectory()
                                  .then((value) {
                                File file = File(
                                    value.path +
                                        '/color.txt');
                                //判断文件是否存在
                                if (file.existsSync()) {
                                  //存在则写入
                                  file.writeAsString(Global
                                      .home_currentcolor
                                      .value
                                      .toString());
                                } else {
                                  //不存在则创建文件并写入
                                  file.createSync();
                                  file.writeAsString(Global
                                      .home_currentcolor
                                      .value
                                      .toString());
                                }
                              });
                              Navigator.of(context).pop();
                            },
                          ),
                        ],
                      ));
                });
          },
        ),
        ListTile(
            leading: const Icon(Icons.score_outlined,
                size: 20.0, color: Colors.white),
            title: Text(
              '查看学习通已批完的考试但未发布的成绩',
              style: TextStyle(
                  color: Colors.white,
                  fontSize: 20,
                  fontWeight: FontWeight.bold),
            ),
            onTap: () {
              Navigator.of(context).pop(); //关闭侧边栏

              Navigator.push(
                  context,
                  MaterialPageRoute(
                      builder: (context) =>
                          chaoxinglogin()));
            }),
        ListTile(
          leading: const Icon(Icons.cached,
              size: 20.0, color: Colors.white),
          title: Text(
            '重新登入',
            style: TextStyle(
                color: Colors.white,
                fontSize: 20,
                fontWeight: FontWeight.bold),
          ),
          onTap: () {
            deleteFile();
            AchievementView(context,
                title: "成功!",
                subTitle: "已清除课程和成绩缓存,请退出app重新登录",
                //onTab: _onTabAchievement,
                icon: Icon(
                  Icons.insert_emoticon,
                  color: Colors.white,
                ),
                //typeAnimationContent: AnimationTypeAchievement.fadeSlideToUp,
                //borderRadius: 5.0,
                color: Colors.green,
                //textStyleTitle: TextStyle(),
                //textStyleSubTitle: TextStyle(),
                //alignment: Alignment.topCenter,
                duration: Duration(seconds: 3),
                isCircle: true, listener: (status) {
              print(status);
            })
              ..show();
          },
        ),
        ListTile(
          leading: const Icon(Icons.settings,
              size: 20.0, color: Colors.white),
          title: Text(
            '关于&设置',
            style: TextStyle(
                color: Colors.white,
                fontSize: 20,
                fontWeight: FontWeight.bold),
          ),
          onTap: () {
            Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (context) => about()),
            );
          },
        ),
      ],
    ),
  ],
),

), type: SideMenuType.slideNRotate, onChange: (_isOpened) { if (isOpened) { Global.bottombarheight = 60

我这个child RiveAnimationasset assetscatriv好像是布局不合理尺寸过大放在代码里就会报错 请给我改进后的代码 child SideMenu background Globalhome_curr

原文地址: http://www.cveoy.top/t/topic/flZP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录