在我的代码中,我使用手势检测器在用户拖动时拉出我的菜单。但是当我拉起菜单时,GestureDetector 的hitbox 不会改变,所以当我想把它放回原处时,它只会在初始的hitbox 上注册拖动,而不是新的(我将小部件转换为)
我希望你能理解这一点^^
这是代码:
Stack(children: [
Column(
children: <Widget>[
Expanded(
child: TabBarView(children: <Widget>[
CostumCard(
imgUrl: url,
),
CostumCard(
imgUrl: url,
),
]))
],
),
IgnorePointer(
child: Opacity(
opacity: opacity,
child: Container(color: Colors.black),
),
),
Transform(
transformHitTests: true,
transform: Matrix4.translationValues(
0.0, MediaQuery.of(context).size.height - 80 - 70, 0.0),
child: Transform(
transformHitTests: true,
transform: Matrix4.translationValues(0.0, yTransform, 0.0),
child: GestureDetector(
onVerticalDragStart: (DragStartDetails details) {
dragStartY = details.globalPosition.dy;
dragUpdateY = dragStartY;
},
onVerticalDragUpdate: (DragUpdateDetails details) {
dragDifference =
dragUpdateY - details.globalPosition.dy;
yTransform -= …Run Code Online (Sandbox Code Playgroud) 我正在创建一个登录屏幕,其中包含用户名和密码字段,但文本似乎总是离顶部有点远(请参见图片)。
我怎样才能解决这个问题?
这是TextFormField的代码:
new Padding(
padding: const EdgeInsets.symmetric(vertical: 8.0),
child: new TextFormField(
maxLines: 1,
controller: controller,
validator: (value) {
if (value.isEmpty) {
return 'Please enter username.';
}
},
decoration: new InputDecoration(
labelText: 'Username',
suffixIcon: new IconButton(
highlightColor: Colors.transparent,
icon: new Container(
width: 36.0, child: new Icon(Icons.clear)),
onPressed: () {
controller.clear();
},
splashColor: Colors.transparent,
),
prefixIcon: new Icon(Icons.account_circle)),
),
),
Run Code Online (Sandbox Code Playgroud)
这是我的一般主题代码,如果有帮助的话^^
new ThemeData(
fontFamily: 'Product Sans',
brightness: Brightness.dark,
buttonColor: Colors.green[300],
accentColor: Colors.green[300],
scaffoldBackgroundColor: Colors.blueGrey[900],
canvasColor: Colors.blueGrey[900],
textSelectionColor: new Color.fromRGBO(81, …Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中使用了全屏对话框,以使用户在文本字段中输入值。这些值中有些是字符串,有些是整数。因此,我想相应地更改键盘,以使不必要的键消失。这是我的实现:
import 'package:flutter/material.dart';
import 'package:meal_tracker/model/food_model.dart';
class AddFoodDialog extends StatelessWidget {
TextEditingController nameController = TextEditingController(),
carbsController = TextEditingController(),
fatController = TextEditingController(),
proteinController = TextEditingController(),
amountController = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Add Food"),
actions: <Widget>[
FlatButton(
child: Text(
"SAVE",
style: TextStyle(color: Colors.white),
),
onPressed: () {
_handleSave(context);
},
)
],
),
body: Form(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: <Widget>[
TextFormField(
decoration: InputDecoration(labelText: "Name"),
controller: nameController,
),
TextFormField(
decoration: InputDecoration(labelText: "Carbs per 100g"), …Run Code Online (Sandbox Code Playgroud) 我按照https://pub.dartlang.org/packages/share中的说明操作,添加了依赖项 running flutter packages get,但我无法在 Dart 代码中导入该插件。我收到以下错误:
Target of URI doesn't exist: 'package:share/share.dart'.
Run Code Online (Sandbox Code Playgroud)
我尝试了几次,所以这既不是打字错误,也不是单一时间错误。
这是一个已知的错误?有什么解决办法吗?
否则,在 Flutter 中是否有不同的方式来共享简单的 url 和文本片段?
我要创建一个对话框,而不是使它后面的小部件变暗的通常的实质方法,而是使它们模糊。所以本质上我想知道是否有一种方法不仅可以模糊图像,而且可以模糊整个应用程序(或其一部分)
我制作了一个应用程序,其中包含相当多的路由,一个接一个地推送多个全屏对话框。但是从一个对话框中我想关闭所有并返回主页。我怎样才能做到这一点?
我不想再次推送主页,因为那样我的导航历史记录中仍然存在所有这些对话框。是pushReplacement正确的方法吗?似乎不是因为它只删除导航历史记录中的最后一个条目,所以如果我按回,我会进入倒数第二个对话框......
在我的 Flutter 项目中,为了提高性能,我创建了许多const小部件,这些小部件在其父小部件重建时不会重建。
但是,在用户更改应用程序的语言后,我需要重建整个应用程序以应用文本更改。
有没有办法强制应用程序完全重建?谢谢,任何建议将不胜感激。
在我的Flutter日志中,即时通讯不断收到此消息(只是带有一些不同的数字):
Background concurrent copying GC freed 153040(3MB) AllocSpace objects, 12(4MB) LOS objects, 49% free, 4MB/8MB, paused 819us total 173.633ms
Run Code Online (Sandbox Code Playgroud)
我最近实现了bloc模式,我对流不那么熟悉,也许我在这里做错了什么……
我有大约5000行代码,所以我无法将其全部发布在这里,只是想知道您是否知道此问题,也许这是一个常见错误
编辑:哦,是的,顺便说一句,我正在Android Emulator,Android Pie上进行测试。我的平台是Windows。
我想使用 FutureBuilder 来检查 url 是否为 png 图像,然后构建一个或两个图像(在列表中)。但不知怎的,当我打印它时,Future 总是返回 null...
结果是应用程序总是使用两个 CachedNetworkImage 构建列表视图,这不是我想要的。如果 URL 是图像,它应该只使用该 url 构建一个 CachedNetworkImage,如果不是,它应该更改 url 并构建一个包含 2 个图像的列表视图。
child: new FutureBuilder(
future: _getImages(widget.imgUrl),
builder: (BuildContext context, AsyncSnapshot snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
return new Text('Press button to start');
case ConnectionState.waiting:
return new Text('Awaiting result...');
default:
if (snapshot.hasError)
return new Text('Error: ${snapshot.error}');
else {
print(snapshot.data);
if (snapshot.data == "image/png") {
return new SingleChildScrollView(
child: new CachedNetworkImage(
imageUrl: widget.imgUrl,
placeholder: new Center(
child: new AdaptiveProgressIndicator()),
),
); …Run Code Online (Sandbox Code Playgroud)