我正在为 OCP 考试而学习,我注意到以下代码片段,其中在 DoubleStream 上调用的 forEach 方法的参数必须与 DoubleConsumer 函数接口的参数匹配,但是 lambda 与所需的类型不匹配,为什么它仍然编译?
DoubleStream.of(3.14159, 2.71828)
.forEach(c -> service.submit(
() -> System.out.println(10*c)
));
Run Code Online (Sandbox Code Playgroud)
DoubleConsumer(接受 Double 类型的参数并返回 void 类型),但是这个 forEach 的返回类型为Future<?>where ?表示 Runnable lambda 的返回类型,它是 void,Future - 这不是 void。我这么说是因为 service.submit(...) 的返回类型Future<?>不是 void,为什么这段代码会编译?
所以我尝试创建一个空边框,并且需要导入javax.swing.border.EmptyBorder;
但是我已经导入了javax.swing.*;
为什么我需要导入先前的导入?不是.*从swing包中导入所有东西.
我的源代码如下:
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
/*
public class Gui extends JFrame {
//row1
JPanel row1 = new JPanel();
JButton reset = new JButton("Reset");
JButton play = new JButton("Play");
//row2
JPanel row2 = new JPanel();
JLabel option = new JLabel("Guess: ", JLabel.RIGHT);
JTextField text1 = new JTextField("0");
JTextField text2 = new JTextField("0");
JTextField text3 = new JTextField("0");
//row3
JPanel row3 = new JPanel();
JLabel answerL = new JLabel("Answer: ", JLabel.RIGHT);
JTextField answerB = new JTextField("", 0); …Run Code Online (Sandbox Code Playgroud) 我正在尝试复制以下设计:
我似乎不明白为什么我的子小部件TabBarView会导致异常。提到了无限高度,但我已经提供了子部件的高度和宽度,所以我对发生的事情感到困惑......
仅供参考:TripPage小部件(代码中未显示,仅显示其状态)作为值传递给 a 的 body 属性Scaffold(也未显示)。我不想改变这一点。
这是我的代码:
class _TripPageState extends State<TripPage> {
//ToDo: Keep as dynamic until an object is created for the listItems.
List<dynamic> upcomingTrips;
List<dynamic> pastTrips;
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Row(mainAxisAlignment: MainAxisAlignment.start, children: <Widget>[
Padding(
child: Text(
"Trips",
style: TextStyle(
color: Colors.deepPurple,
fontSize: 36.0,
fontWeight: FontWeight.bold),
),
padding: EdgeInsets.only(top: 40.0, left: 28.0),
)
]),
DefaultTabController(
length: 2,
child: Column(mainAxisSize: MainAxisSize.max, children: <Widget>[
Padding(
padding: EdgeInsets.only(left: 16.0, …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个自定义滚动视图,其中包含一个条子应用程序栏,以实现与此处显示的类似的效果:
https://medium.com/@diegovoper/flutter-collapsing-toolbar-sliver-app-bar-14b858e87abe
然而,我想要有“搜索”一词,在它下面我想要 3 个均匀分布的图标按钮,当页面(CustomScrollView)滚动时,我希望将 3 个图标按钮固定到 SliverAppBar 的顶部,并且搜索文本消失...
我尝试通过以下代码实现上述目标:
class SearchPage extends StatelessWidget {
const SearchPage();
@override
Widget build(BuildContext context) {
return CustomScrollView(slivers: <Widget>[
const SliverAppBar(
pinned: true,
expandedHeight: 250.0,
flexibleSpace: _buildSliverAppBarFlex(),
);
}
Widget _buildSliverAppBarFlex() {
return Container(
child: Column(
children: <Widget>[
Text("Search", style: TextStyle(fontSize: 24.0,
color: Colors.white,
fontWeight: FontWeight.bold)),
Row(children: <Widget>[
IconButton(icon: Icon(Icons.flight)),
IconButton(icon: Icon(Icons.hotel)),
IconButton(icon: Icon(Icons.drive_eta))
])
],
)
);
}
}
Run Code Online (Sandbox Code Playgroud)
然而,我收到一条警告,称FlexibleSpace必须采用const构造函数小部件,而我制作的_buildSilverAppBarFlex小部件则不是——我也无法向其中添加const或final...有什么想法可以实现我想要的吗?