我的代码:
import 'package:flutter/material.dart';
//My backend file
import '...';
class UserProfile extends StatefulWidget {
final String userName;
final String password;
final String token;
UserProfile(this.userName, this.password, this.token, {Key key})
: super(key: key);
_UserProfileState createState() => _UserProfileState();
}
class _UserProfileState extends State<UserProfile> {
Future _getUserInfo() async {
var user = await GetUserInfo.getInfo(
widget.userName, widget.password, widget.token);
final String firstName = user.firstName;
final String email = user.email;
final String cpf = user.cpf;
}
所以我需要什么(我不知道该怎么做)?
1-获取这些“完全名称”、“电子邮件”和“CPF”字符串;
2-将它们设置为一些文本小部件。
我的问题是什么?
不使用局部变量‘block chainId’的值。尝试删除变量,或使用它.DAT(未使用的_局部变量)
我不知道如何从方法中获取这些值,并让外部代码使用它们的值.我知道我需要某种回报,否则他们是无法访问的,但我不知道如何构建这个回报。
所有内部字符串都有有效值,如果我试图将它们打印到方法中,我将看到我需要的是什么
您可以复制粘贴,运行下面的完整代码 步骤1:假设您的getUserInfo()返回aUser对象 步骤2:使用bool loading若要控制加载状态,请在延迟5秒内进行模拟。 步骤3:使用User对象在文本小部件中的信息
工作演示
enter image description here
代码段
class User { String firstName; String email; String cpf;
User({this.firstName, this.email, this.cpf});
}
... class _UserProfileState extends State { User user; bool loading = false;
Future _getUserInfo() async { setState(() { loading = true; }); ... @override void initState() {
_getUserInfo(); super.initState(); } ... return loading ? Center( child: CircularProgressIndicator(), ) : Stack( children:
[ 全码
import 'package:flutter/material.dart'; import 'dart:ui' as ui;
void main() => runApp(MyApp());
class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Profile Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: UserProfile(title: 'Profile'), ); } }
class User { String firstName; String email; String cpf;
User({this.firstName, this.email, this.cpf}); }
class GetUserInfo { static Future getInfo( String userName, String password, String token) async { await Future.delayed(Duration(seconds: 5)); return User(firstName: "abc", email: "def", cpf: "123"); } }
class UserProfile extends StatefulWidget { UserProfile({Key key, this.title, this.userName, this.password, this.token}) : super(key: key); final String title; final String userName; final String password; final String token;
@override _UserProfileState createState() => _UserProfileState(); }
class _UserProfileState extends State { User user; bool loading = false;
Future _getUserInfo() async { setState(() { loading = true; });
user = await GetUserInfo.getInfo(
widget.userName, widget.password, widget.token);
setState(() {
loading = false;
});
}
@override void initState() { // TODO: implement initState _getUserInfo(); super.initState(); }
@override Widget build(BuildContext context) { final _width = MediaQuery.of(context).size.width; final _height = MediaQuery.of(context).size.height; final String imgUrl = 'https://pixel.nymag.com/imgs/daily/selectall/2017/12/26/26-eric-schmidt.w700.h700.jpg';
return loading
? Center(
child: CircularProgressIndicator(),
)
: Stack(
children: <Widget>[
Container(
color: Colors.blue,
),
Image.network(
imgUrl,
fit: BoxFit.fill,
),
BackdropFilter(
filter: ui.ImageFilter.blur(
sigmaX: 6.0,
sigmaY: 6.0,
),
child: Container(
decoration: BoxDecoration(
color: Colors.blue.withOpacity(0.9),
borderRadius: BorderRadius.all(Radius.circular(50.0)),
),
)),
Scaffold(
appBar: AppBar(
title: Text(widget.title),
centerTitle: false,
elevation: 0.0,
backgroundColor: Colors.transparent,
),
drawer: Drawer(
child: Container(),
),
backgroundColor: Colors.transparent,
body: Center(
child: Column(
children: <Widget>[
SizedBox(
height: _height / 12,
),
CircleAvatar(
radius: _width < _height ? _width / 4 : _height / 4,
backgroundImage: NetworkImage(imgUrl),
),
SizedBox(
height: _height / 25.0,
),
Text(
user.firstName,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: _width / 15,
color: Colors.white),
),
Padding(
padding: EdgeInsets.only(
top: _height / 30,
left: _width / 8,
right: _width / 8),
child: Text(
user.cpf,
style: TextStyle(
fontWeight: FontWeight.normal,
fontSize: _width / 25,
color: Colors.white),
textAlign: TextAlign.center,
),
),
Divider(
height: _height / 30,
color: Colors.white,
),
Row(
children: <Widget>[
rowCell(343, 'POSTS'),
rowCell(673826, 'FOLLOWERS'),
rowCell(275, 'FOLLOWING'),
],
),
Divider(height: _height / 30, color: Colors.white),
Padding(
padding: EdgeInsets.only(
left: _width / 8, right: _width / 8),
child: FlatButton(
onPressed: () {},
child: Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Icon(Icons.person),
SizedBox(
width: _width / 30,
),
Text('FOLLOW')
],
)),
color: Colors.blue[50],
),
),
],
),
))
],
);
}
Widget rowCell(int count, String type) => Expanded( child: Column( children: [ Text( '$count', style: TextStyle(color: Colors.white), ), Text(type, style: TextStyle(color: Colors.white, fontWeight: FontWeight.normal)) ], ));
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。