我有一个固定高度的堆栈,我想在该堆栈的底部放置一行包含多个元素的行。
我包裹了我的行
mainAxisAlignment: MainAxisAlignment.center
Run Code Online (Sandbox Code Playgroud)
作为定位元素中的属性,因此代码现在如下所示:
Stack(
children: [
//Other children,
Positioned(
bottom: 0,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
//children here
],
),
),
],
),
Run Code Online (Sandbox Code Playgroud)
奇怪的是,在该行位于定位元素内部之前,它占据了屏幕的整个宽度。现在该行只有其子行的宽度。这是一个问题,因为孩子们现在不再以中心为中心。
有谁知道这里发生了什么以及如何将行放置在堆栈的底部而不将行缩小到不再是屏幕的宽度?
我已经在 flutter 中使用 RevenueCat 实现了订阅,但 RevenueCat 没有关于取消订阅的文档。
我正在编写一个扫描仪应用程序,该应用程序将安装在运行 Android 的扫描仪上。应用程序内部有一个TextFormField等待输入扫描或粘贴到里面的文本以进行其他 API 调用。
但是我没有找到任何TextFormField禁用软键盘的选项,但仍然可以接受输入文本
以下是我TextFormField尝试过的扫描仪小部件代码。
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
class BuildScannerBar extends StatefulWidget {
final Function onFieldSubmitted;
final TextEditingController textFieldController;
final String labelText, hintText;
final bool disableKeyboard;
BuildScannerBar({
@required this.textFieldController,
@required this.onFieldSubmitted,
this.disableKeyboard = true,
this.labelText = 'Barcode Scan',
this.hintText = '',
});
@override
_BuildScannerBarState createState() => _BuildScannerBarState();
}
class _BuildScannerBarState extends State<BuildScannerBar> {
@override
Widget build(BuildContext context) {
return Align(
alignment: Alignment.topCenter,
child: Container(
height: 75,
margin: EdgeInsets.only(top: 50),
width: 300 …Run Code Online (Sandbox Code Playgroud) 我试图在子文本框小部件上绘制红点,如下所示:
为此,我用 widget 包装了子CustomPaint()widget:
return CustomPaint(
painter: DotsPainter(), //draws red dots based on child's size
child: child, //textbox
);
Run Code Online (Sandbox Code Playgroud)
但结果是这样的:
如何使 CustomPainter“覆盖”其子部件?
谢谢。
我对如何将 stateNotifier 与 Riverpod 一起使用感到困惑。大多数教程都使用反例,这很好,但对我来说仍然不太清楚。我正在尝试实现一个具有 2 个状态的 stateNotifier : isDrawerOpen 和 isDrawerColor ,它返回布尔结果。有些功能会触发这些状态的变化。以下是我已经实现的内容,确实需要一些澄清。
import 'package:flutter_riverpod/all.dart';
class DrawerNotifier extends StateNotifier{
DrawerNotifier() : super(false);
bool isDrawerOpen = false;
bool isDrawerColor = false;
void toggleDrawer() {
isDrawerOpen = !isDrawerOpen;
}
void toggleColor() {
isDrawerColor = !isDrawerColor;
}
}
final drawerProvider = StateNotifierProvider((_) => DrawerNotifier());
final isDrawerOpen = StateNotifierProvider((ref){
final state = ref.watch(drawerProvider);
return state.isDrawerOpen;
});
final isDrawerColor = StateNotifierProvider((ref){
final state = ref.watch(drawerProvider);
return state.isDrawerColor;
});
Run Code Online (Sandbox Code Playgroud) Json 响应具有 gzip 编码字符串。
var dataList = [
{"Data": "compressedata"},
{"Data": "compressedData"}
];
Run Code Online (Sandbox Code Playgroud)
我尝试了很多方法来解压字符串,但无法得到预期的结果。最后尝试的方法是
List<int> res = base64.decode(base64.normalize(zipText));
print(utf8.decode(res));
Run Code Online (Sandbox Code Playgroud)
其中 zipText 是来自 json 的字符串,这会引发错误
Unhandled Exception: FormatException: Unexpected extension byte (at offset 5)
Run Code Online (Sandbox Code Playgroud)
其他方式
Uint8List compressed = base64.decode(zipText);
var gzipBytes = new GZipDecoder().decodeBytes(compressed);
print(gzipBytes);
Run Code Online (Sandbox Code Playgroud)
抛出错误
Unhandled Exception: FormatException: Invalid GZip Signature flutter
Run Code Online (Sandbox Code Playgroud)
非常感谢任何帮助。
这是一些伪代码,显示了我想要实现的目标:
Text txt(text, [subtitle = false]) {
final params = subtitle
? {
'textAlign': TextAlign.center,
'style': TextStyle(color: Colors.purple)
}
: {
'textAlign': TextAlign.left,
'style': TextStyle(color: Colors.black54)
};
return Text(
text,
...params,
);
}
Run Code Online (Sandbox Code Playgroud)
是否可以将变量参数传递给 Flutter 小部件?请记住,Text 小部件只是一个示例,而不是我问题的焦点,它可以是任何其他 Flutter 小部件,例如 Container 或 SizedBox。
我正在尝试使用flutter_svg包加载一些 .svg 图标。
\nclass _MyHomePageState extends State<MyHomePage> {\n final String iconPath = "assets/icons/adept.svg";\n ...\n}\nRun Code Online (Sandbox Code Playgroud)\n我将包含该文件夹assets/的文件夹添加icons/到该pubspec.yaml文件中:
assets:\n - assets/\nRun Code Online (Sandbox Code Playgroud)\n当我尝试将图标加载到我的体内时:
\n body: Center(\n child: Container(\n child: LimitedBox(\n child: SvgPicture.asset(\'iconPath\', color: Colors.black, width: 100, height: 100,),\n maxHeight: 100,\n maxWidth: 100,\n )\n )\n ),\nRun Code Online (Sandbox Code Playgroud)\n我得到这个 StackTrace,无法加载资产:assetName,
\nI/flutter (10154): \xe2\x95\x90\xe2\x95\x90\xe2\x95\xa1 EXCEPTION CAUGHT BY SVG \xe2\x95\x9e\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\nI/flutter (10154): The following assertion was thrown resolving a single-frame picture stream:\nI/flutter (10154): Unable to load …Run Code Online (Sandbox Code Playgroud) 我计划在 Flutter 中为个人应用程序创建一个富文本编辑器。我知道已经有一些选择,比如 zefyr。然而,它仍处于开发预览阶段,我想构建一些不同的东西。
文本编辑器的功能是用户可以添加图像、加粗文本、添加列表、斜体文本等。只是基本的文本编辑器功能。
我遇到问题的地方是文本输入方面。flutter 默认文本输入仅允许每个文本字段使用一种文本样式。因此,当涉及到内联样式时,这将构成巨大的挑战。此外,文本字段中不能包含图像,因此这是另一个问题。
如果有人对如何解决这个问题有任何想法,那么这将是一个很好的开始。
所以,我真的在询问创建编辑器的方法,因为它不像在 html 中创建编辑器那么简单
richtextbox rich-text-editor flutter flutter-dependencies flutter-layout
是否可以像 ReorderableListView 一样对 ListView 的顺序更改进行动画处理,但无需用户交互。
例如,意味着几秒钟后 ListView 的顺序会发生变化。所以我有两个包含相同项目但顺序不同的列表。列表一和列表二。
我已经看到了 AnimatedList,但在那里我可以删除或添加动画。我需要像移动动画这样的东西。
有点像 ReorderableListView,但没有用户交互。或者是否可以在 ReorderableListView 中以编程方式替换用户交互?
提前致谢