如何在约束布局中垂直对齐和居中对象?可以垂直或水平对齐,但除了限制两个网格线之间的视图之外,我还没有找到同时居中的方法.
似乎居中是约束布局的一个巨大问题,迫使我回到"centerInParent","centerVertical"和"centerHorizontal"的相对布局.
不幸的是,我发现不使用两个网格线的唯一方法是使用嵌套的Relative和LinearLayouts(Constraint Layout应该解决这个确切的场景!).
使用相对和线性布局的布局:
<RelativeLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
app:layout_constraintTop_toBottomOf="@id/user_points"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent">
<LinearLayout
android:id="@+id/stat_1_layout"
android:layout_width="60dp"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/divider_1"
android:orientation="vertical">
<TextView
android:id="@+id/stat_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:text="10"
android:textSize="16dp"
android:textColor="@color/textSecondaryDark"
android:maxLines="1"/>
<TextView
android:id="@+id/stat_detail_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:text="Streak"
android:textSize="8sp"
android:textColor="@color/textSecondary"
android:maxLines="1"/>
</LinearLayout>
<View
android:id="@+id/divider_1"
android:layout_width="1dp"
android:layout_height="38dp"
android:layout_toLeftOf="@+id/stat_2_layout"
android:background="@drawable/linedivider"/>
<LinearLayout
android:id="@+id/stat_2_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="18dp"
android:layout_marginRight="18dp"
android:layout_centerInParent="true"
android:orientation="vertical">
<TextView
android:id="@+id/stat_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:text="243"
android:textSize="16dp"
android:textColor="@color/textSecondaryDark"
android:maxLines="1"/>
<TextView
android:id="@+id/stat_detail_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:text="Calories Burned"
android:textSize="8sp"
android:textColor="@color/textSecondary"
android:maxLines="1"/>
</LinearLayout> …
Run Code Online (Sandbox Code Playgroud) Flutter 中如何将数字四舍五入到最接近的整数?
Numround
方法四舍五入到最接近的整数。怎么总能四舍五入?
StreamBuilder 总是被调用两次吗?一次用于初始数据,然后一次用于输入流?
初始化以下 StreamBuilder 显示构建方法被调用了两次。第二个调用是在第一个调用之后的 0.4 秒。
流:构建 1566239814897
流:构建 1566239815284
import 'dart:async';
import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:nocd/utils/bloc_provider.dart';
void main() =>
runApp(BlocProvider<MyAppBloc>(bloc: MyAppBloc(), child: MyApp()));
class MyAppBloc extends BlocBase {
String _page = window.defaultRouteName ?? "";
/// Stream for [getPage].
StreamController<String> pageController = StreamController<String>();
/// Observable navigation route value.
Stream get getPage => pageController.stream;
MyAppBloc() {}
@override
void dispose() {
pageController.close();
}
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
final MyAppBloc myAppBloc = BlocProvider.of<MyAppBloc>(context);
return …
Run Code Online (Sandbox Code Playgroud) 有没有办法在函数中加载 Flutter 中的图像而无需访问 BuildContext?
Flutter可以预加载图片,但precacheImage()
需要BuildContext,使用起来不方便。
我想在不支持的initState()
StatefulWidget 方法中加载图像。precacheImage()
关于预加载图像存在一个未解决的问题,表明当前不支持在没有 BuildContext 的情况下加载图像。
我有一个带有多个项目视图类型的RecyclerView,因此它们被分成单独的ViewHolder类.之前,当所有ViewHolder与RecyclerView Adapter位于同一类时,我可以在单击或删除项目时直接更新适配器.但是,我将ViewHolders分成不同的类以更好地组织代码.现在,我无法直接更新我的RecyclerView适配器.以下哪种解决方案是从ViewHolder与我的适配器进行通信的最佳方式?如果有比我列出的更好的解决方案,请建议!
接口或事件总线解决方案真的是最好的方法吗?肯定有一种更好的方法来进行视图和适配器之间的通信!
该Center
部件在堆叠的中心部件水平和垂直中心。如何仅水平或垂直居中小部件?
使用行或列小部件可以使堆栈中的小部件居中。可以在不使用这些小部件的情况下完成吗?
状况:
中心小部件:
Container(
decoration:
BoxDecoration(border: Border.all(color: Colors.black87, width: 10)),
child: Stack(
children: [
Center(
child: Container(color: Colors.amber, width: 50, height: 50),
),
],
),
);
Run Code Online (Sandbox Code Playgroud)
与行水平居中:
Row(mainAxisAlignment: MainAxisAlignment.center)
垂直居中与列:
Column(mainAxisAlignment: MainAxisAlignment.center)
上面的对齐是想要的结果。使用其他 Flutter 小部件可以实现这些结果吗?
一个NoSuchMethodError: The method 'markNeedsBuild' was called on null.
出现在错误日志错误。我从来没有在调试中看到过这个错误,用户也没有报告任何问题。为什么会发生此错误,我可以做些什么来防止它发生?