我得到一个渲染异常,我不明白如何修复.我正在尝试创建一个包含3行的列.
行[图片]
行[TextField]
行[按钮]
这是构建容器的代码:
Container buildEnterAppContainer(BuildContext context) {
var container = new Container(
padding: const EdgeInsets.all(8.0),
child: new Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
buildImageRow(context),
buildAppEntryRow(context),
buildButtonRow(context)
],
),
);
return container;
}
Run Code Online (Sandbox Code Playgroud)
和我的buildAppEntryRow文本容器的代码
Widget buildAppEntryRow(BuildContext context) {
return new Row(
children: <Widget>[
new TextField(
decoration: const InputDecoration(helperText: "Enter App ID"),
style: Theme.of(context).textTheme.body1,
)
],
);
}
Run Code Online (Sandbox Code Playgroud)
当我运行时,我得到以下异常:
I/flutter ( 7674): BoxConstraints forces an infinite width.
I/flutter ( 7674): These invalid constraints were provided to RenderStack's layout() function by the …Run Code Online (Sandbox Code Playgroud) 我有一个定位的Text元素,它位于Stack中的Image元素之上.我想将一个简单的背景颜色应用于该Text元素,以便它像文本框一样构成文本框架:
我可以通过在该堆栈中插入一个Container作为另一个定位子项来完成此操作.但是每次文本字符串更改时我都必须重新计算宽度,这是次优的.有没有更好的办法?
var stack = new Stack(
children: <Widget>[
new Image.asset ( // background photo
"assets/texture.jpg",
fit: ImageFit.cover,
height: 600.0,
),
new Positioned ( // headline
child: new Container(
decoration: new BoxDecoration (
backgroundColor: Colors.black
),
),
left: 0.0,
bottom: 108.0,
width: 490.0,
height: 80.0,
),
new Positioned (
child: new Text (
"Lorem ipsum dolor.",
style: new TextStyle(
color: Colors.blue[500],
fontSize: 42.0,
fontWeight: FontWeight.w900
)
),
left: 16.0,
bottom: 128.0,
)
]
);
Run Code Online (Sandbox Code Playgroud) 在Flutter之外,当我实现firebase身份验证时,我总是使用firebase提供的onAuthStateChanged侦听器来确定用户是否已登录并相应地做出响应.
我正在尝试使用flutter做类似的事情,但我可以找到一种方法来访问Firebase的onAuthStateChanged.我正在使用firebase_auth和google_signin Flutter插件.我正在使用firebase_auth Flutter插件中包含的示例代码.下面是示例代码.我可以使用谷歌登录成功登录,但示例太简单了,因为我想让观察者/监听器检测用户的登录/退出状态.
有没有办法通过观察者/监听器使用firebase_auth/google_signin flutter插件来检测以确定用户的状态?
最终,我希望应用程序确定用户是否已登录(是/否).如果没有,则显示登录屏幕,如果是,则显示我的主应用程序页面.
import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:google_sign_in/google_sign_in.dart';
final FirebaseAuth _auth = FirebaseAuth.instance;
final GoogleSignIn _googleSignIn = new GoogleSignIn();
void main() {
runApp(new MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Firebase Auth Demo',
home: new MyHomePage(title: 'Firebase Auth Demo'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => new _MyHomePageState(); …Run Code Online (Sandbox Code Playgroud) 如何获取Flutter ListView, SliverList等内的当前滚动偏移量?
我正在Windows上尝试Flutter开发。我有一个带有InputField的简单测试应用程序。我希望第一个键盘输入为大写字母,但目前看不到一种实现该功能的方法(例如,按下Shift键启动键盘)。有任何想法吗?
代码(稍微简化一下)是:
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(
theme: new ThemeData.dark(),
home: new MainScreen()
));
}
class MainScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
leading: new IconButton(
icon: new Icon(Icons.menu),
tooltip: 'Navigation menu',
onPressed: null,
),
title: new Text('Test'),
),
body: new NewTest(),
);
}
}
/// Widget
class NewTest extends StatefulWidget {
@override
_NewTestInputState createState() => new _NewTestInputState();
}
/// State
class _NewTestInputState extends State<NewTest> {
InputValue _currentInput;
void _handleInputChange(InputValue …Run Code Online (Sandbox Code Playgroud) 我Form用Flutter 创建了一个但是当我专注于一个字段并且键盘弹出时,内容消失了.
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter/material.dart';
import 'package:greencat/greencat.dart';
import 'package:woody_app/Application.dart';
import 'package:woody_app/actions/AuthAction.dart';
import 'package:woody_app/states/AuthState.dart';
class ProfileScreen extends StatefulWidget {
@override
State createState() => new ProfileScreenState();
}
class PersonData {
String name = '';
String phoneNumber = '';
String password = '';
}
class ProfileScreenState extends State<ProfileScreen> {
final Store<AuthState, AuthAction<dynamic>> _store = Application.get().store;
StreamSubscription<AuthState> _subscriber;
final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
PersonData person = new PersonData();
void showInSnackBar(String value) {
_scaffoldKey.currentState.showSnackBar(new SnackBar(
content: new …Run Code Online (Sandbox Code Playgroud)