有两种方法可以更改用户在显示上看到的内容:我可以推送到另一个页面,或者可以更改有状态小部件的状态并重建它。你能告诉我哪种方法是最佳实践吗?(如果这取决于——我猜——取决于什么?)
推动:
class Pushing extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: RaisedButton(
onPressed: () => Navigator.push(context, new MaterialPageRoute(builder: (context) => new SecondPage())),)
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
使用状态
class UsingStates extends StatefulWidget {
@override
State createState() => new _UsingStatesState();
}
class _UsingStatesState extends State<UsingStates> {
bool isPageTwo;
@override
void initState() {
isPageTwo = false;
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: isPageTwo ? Center(child: Text('Page two')) : Center(child: RaisedButton(onPressed: () {
setState(() …Run Code Online (Sandbox Code Playgroud) 我正在开发 Flutter 应用程序,我想将 PDF 文件上传到 Firebase 存储,我使用 Documents_picker 选择文件,但无法将其上传到存储...请帮助我...我的代码如下
uploaddoc()async{
dynamic docPaths;
// Platform messages may fail, so we use a try/catch PlatformException.
try {
docPaths = await DocumentsPicker.pickDocuments;
final Directory tempDir = Directory.systemTemp;
final String fileName = "${Random().nextInt(10000)}.pdf";
final File file = File('${tempDir.path}/$fileName');
file.writeAsBytesSync(docPaths);
final StorageReference ref = FirebaseStorage.instance.ref().child(fileName);
final StorageUploadTask task = ref.putFile(file);
final Uri downloadUrl = (await task.future).downloadUrl;
_path = downloadUrl.toString();
print(_path);
} on PlatformException {
}
// If the widget was removed from the tree while …Run Code Online (Sandbox Code Playgroud) final password = TextFormField(
autofocus: false,
obscureText: true,
decoration: InputDecoration(
hintText: 'Password',
contentPadding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0),
prefixIcon: new ImageIcon(
new AssetImage('assets/ic_email.png'),
size: 15.0,
),
),
);
Run Code Online (Sandbox Code Playgroud)
我已将大小设置为 15.0 但没有任何变化,所以请指导我,我哪里做错了?
我正在构建一个 flutter 应用程序,并且那里有一个Register表单。我正在使用TextFormFields,下面是我的代码。
import 'package:flutter/material.dart';
class RegisterPage extends StatelessWidget {
final borderColorGreen = const Color(0xff339966);
TextEditingController nameTxtController =TextEditingController();
TextEditingController emailTxtController =TextEditingController();
TextEditingController mobileTxtController =TextEditingController();
TextEditingController passwordTxtController =TextEditingController();
TextEditingController confirmPasswordTxtController =TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/background_login_5.jpg"),
fit: BoxFit.cover,
),
),
child: ListView(
children: <Widget>[
_buildTitleSection(),
_buildInputFields("Name",nameTxtController),
_buildInputFields("Email",emailTxtController),
_buildInputFields("Mobile",mobileTxtController),
_buildInputFields("Password",passwordTxtController),
_buildInputFields("Confirm Password",confirmPasswordTxtController),
_buildRegisterButton(),
],
),
),
);
}
Widget _buildTitleSection() {
return Container(
margin: EdgeInsets.only(top: 40),
padding: EdgeInsets.all(32), …Run Code Online (Sandbox Code Playgroud) 我有疑问,我的listView中有一个Stepper,但它甚至无法滚动,我尝试了三天,但没有结果,为什么会发生这种情况以及如何解决?
有人可以帮我解决这个问题吗?
这是我的代码,
new ListView( padding: EdgeInsets.fromLTRB(5.0, 0.0, 5.0, 3.0), children: <Widget>[
new ListTile(
title: new Text(
"Day 1",
style: new TextStyle(fontSize: 20.0, color: Colors.lightGreen, fontWeight: FontWeight.bold,fontFamily: 'GoogleSans'),
),
subtitle: new Stepper(
currentStep: this._currentStep1,
onStepTapped: (step){
setState(() {
this._currentStep1 = step;
});
},
onStepContinue: (){
setState(() {
if(this._currentStep1 < 4){
this._currentStep1 += 1;
} else {
//logika jika komplit
}
});
},
onStepCancel: (){
setState(() {
if(this._currentStep1 > 0){
this._currentStep1 -= 1;
} else {
this._currentStep1 = 0;
}
}); …Run Code Online (Sandbox Code Playgroud) 在容器中,你认为我有AppBar()一个女巫,我想要另一个隐形容器,就像这个屏幕截图一样:
因为另外两个容器是不可见的,我想通过从上到下或从下到上滑动来显示它们,以更改可见或不可见的可见性
从上到下滑动显示或从顶部滑动隐藏
从下到上滑动显示或从下滑动到隐藏
有没有库可以实现这个滑动动画?
是否可以以父级将采用子级大小的方式垂直排列子级?
更具体地说,这就是我想要做的:
让一个图标和一个文本垂直对齐,它们之间有一个小间距,并在具有固定高度的矩形内居中。
我希望文本和图标的垂直容器的大小根据其子项而定。像 FlatButton.icon 这样的东西,只有垂直而不是水平。
对于那个内部垂直容器,我发现的只是 Column 和 ListView,它们都采用它们在父级中可以获得的所有高度,而不是采用它们的子级的高度。
我已经实现了一个具有下面列出的逻辑的底部导航栏,我想检查用户是否已登录。如果用户在第三个选项卡上登录,我想显示个人资料页面而不是登录页面。这是我显示底部导航栏的代码,我被困在 checkIsLoggedIn() 异步函数之后要做什么。
之后,我构建小部件列表以在 3 个选项卡中显示页面。其代码如下,
因此,我需要显示,如果用户已登录,则代替 SignIn(),它会显示登录,否则,它会显示个人资料页面。请帮我一下。
上图:
正常好看的TextFormField,不提供任何WidgetforsuffixIcon
下图:
提供Icon WidgetforsuffixIcon使文本输入不必要地浮动
知道是什么原因造成的吗?
代码:
这是一个纯 TextFormFieldsuffixIcon
TextFormField(
decoration: InputDecoration(
suffixIcon: Icon(Icons.search),
)
)
Run Code Online (Sandbox Code Playgroud)
因此,我使用此代码创建了以下视图:
return Column(
children:[
Expanded(
child: gridView()
),
IconButton(
icon: Icon(Icons.add_box),
iconSize: 30,
onPressed: () {
_showPicker();
}
)
]);
Run Code Online (Sandbox Code Playgroud)
但是,我希望 IconButton 没有散布在整个屏幕上的白色背景。我将如何继续使它成为那样,而不是用 GridView 覆盖。Column 是一种错误类型的小部件吗?