Flutter中元素的shadow被另一个元素遮盖
我希望的是第一个元素的右侧能够显示一个阴影,但是在使用Expanded后,这部分阴影就被遮盖了
import 'package:flutter/material.dart';import 'package:fluent_ui/fluent_ui.dart' as fluent;void main() { runApp(const App());}class App extends StatefulWidget { const App({super.key}); @override State<StatefulWidget> createState() { return _App(); }// This widget is the root of your application.}class _App extends State<App> { @override Widget build(BuildContext context) { return const fluent.FluentApp( title: "test", home: MainPage(title: "MainTitle"), debugShowCheckedModeBanner: false, ); }}class MainPage extends StatelessWidget { const MainPage({super.key, required this.title}); // This widget is the home page of your application. It is stateful, meaning // that it has a State object (defined below) that contains fields that affect // how it looks. // This class is the configuration for the state. It holds the values (in this // case the title) provided by the parent (in this case the App widget) and // used by the build method of the State. Fields in a Widget subclass are // always marked "final". final String title; @override Widget build(BuildContext context) { return Scaffold( body: Row( children: [ Container( width: 64, decoration: const BoxDecoration( color: Color.fromRGBO(244, 244, 244, 1), boxShadow: [ BoxShadow( color: Color.fromRGBO(0, 0, 0, 0.5), offset: Offset(1, 0), blurRadius: 4, spreadRadius: 0, ) ]), child: const Menu(), ), Expanded( child: Container( height: double.infinity, decoration: const BoxDecoration(color: Color.fromRGBO(243, 243, 243, 1)), child: Text("test"), )) ], ), ); }}class Menu extends StatefulWidget { const Menu({super.key}); @override State<StatefulWidget> createState() { return _Menu(); }}class _Menu extends State<Menu> { @override Widget build(BuildContext context) { return Container( width: 64, decoration: const BoxDecoration( color: Color.fromRGBO(243, 243, 243, 1), boxShadow: [ BoxShadow( color: Color.fromRGBO(0, 0, 0, 0.5), offset: Offset(1, 0), blurRadius: 4, spreadRadius: 0, ) ]), child: Column( children: [ fluent.IconButton( icon: const Icon( Icons.home, color: Color.fromRGBO(67, 67, 67, 1), size: 42, ), onPressed: () { print("object"); }) ], ), ); }}
试过用stack的方式,但是我需要第二个元素填满整个窗口,stack里面似乎没有办法用Expanded。
row的children中添加一个 sizedBox 然后再设置width
在 Flutter 中,如果一个元素的阴影被另一个元素遮盖,通常是因为阴影被包含在另一个元素的范围内。在你的代码中,Expanded
元素占据了整个 Row
,因此它包含在其范围内的任何元素的阴影都被它自身遮挡。
要解决这个问题,你可以使用 Positioned
元素在 Stack
中创建浮动层,这样即使 Expanded
元素占据整个空间,阴影也能显示在它上面。下面是一个修改后的示例代码:
import 'package:flutter/material.dart';import 'package:fluent_ui/fluent_ui.dart' as fluent;void main() { runApp(const App());}class App extends StatefulWidget { const App({super.key}); @override State<StatefulWidget> createState() { return _App(); }}class _App extends State<App> { @override Widget build(BuildContext context) { return const fluent.FluentApp( title: "test", home: MainPage(title: "MainTitle"), debugShowCheckedModeBanner: false, ); }}class MainPage extends StatelessWidget { const MainPage({super.key, required this.title}); final String title; @override Widget build(BuildContext context) { return Scaffold( body: Stack( children: [ Container( width: 64, decoration: const BoxDecoration( color: Color.fromRGBO(244, 244, 244, 1), boxShadow: [ BoxShadow( color: Color.fromRGBO(0, 0, 0, 0.5), offset: Offset(1, 0), blurRadius: 4, spreadRadius: 0, ) ]), child: const Menu(), ), Positioned( // 使用 Positioned 元素来放置阴影层,使其浮在 Expanded 元素之上。 top: 0, // 根据需要调整位置。 left: 0, // 根据需要调整位置。 child: Container( // 这里放置你的阴影层。你可以根据需要调整它的样式和内容。 height: double.infinity, decoration: BoxDecoration(color: Colors.transparent), // 设置透明背景以使阴影可见。 child: Text("test"), // 你的内容。 ), ), Expanded( // 你的主要内容区域。它将在整个 Row 中展开。 child: Container( // 这只是一个示例,你可以根据需要调整样式和内容。 height: double.infinity, decoration: BoxDecoration(color: Color.fromRGBO(243, 243, 243, 1)), // 这只是一个示例,你可以根据需要调整样式和内容。 child: Text("test"), // 这只是一个示例,你可以根据需要调整样式和内容。 ), ) ], ), ); }}
问题内容: 我想将一个DIV元素移到另一个元素中。例如,我要移动此对象(包括所有子对象): 到这个: 这样我有: 问题答案: 曾经尝试过普通的JavaScript … 吗?
问题内容: 我已经看过其他几个问题,但似乎无法弄清楚它们中的任何一个,所以这是我的问题,我想要一个div或span,当您将鼠标悬停在它上面时,就会出现一个区域,就像是一滴水下。 例如我有一个div,我想将鼠标悬停在上面,并让它显示有关我悬停的项目的一些信息 但这似乎不起作用,我不知道为什么…,如果有办法在CSS中做到这一点,我想知道,但是我想要任何和所有建议。 问题答案: 仅当隐藏的div是用于悬
问题内容: 我想将一个DIV元素移到另一个元素中。例如,我要移动此对象(包括所有子对象): 到这个: 这样我有: 问题答案: 曾经尝试过普通的JavaScript … 吗?
我正在尝试自动化访问点web配置。在此期间,我会弹出一个我想要点击的窗口(类似于“是”和“否”的叠加 我试图单击的覆盖层的HTML代码: 我试过了 但我得到以下错误: 引发exception_class(message,screen,stacktrace)selenium.common.exceptions.ElementClickInterceptedException:message:元素在点
问题内容: 我对CSS选择器有疑问。仅当在具有类名的a中时,如何选择具有特定类名的a ?这个CSS类在其他地方使用,我不想在任何地方更改样式。 问题答案: 只需在父元素和后代元素之间使用CSS后代选择器(空格)即可: 在这种情况下,仅适用于Class的规则,前提是其祖先是该Class的规则。相反,您可以使用直接子组合器,但是您必须指定与每个父/祖先的关系,直到需要其类的父子/祖先,这可能很难维护C
问题内容: 是否可以在CSS中选择多个具有某个特定类,id等父的元素?例如: 如果不是,是否有办法选择该元素的所有子元素? 问题答案: 是否可以在CSS中选择多个具有某个特定类,id等父的元素? 当前,不幸的是,并非没有复制整个父选择器并指定所有后代,而是1: 直到选择器3最终确定后,他们才提出了伪类表示法来进行此操作,直到最近,基本实现才开始出现。 简而言之,现在已成为标准的伪类称为。在遥远的将