123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import 'package:flutter/material.dart';
- import 'package:flutter_habit/common/I18N.dart';
- import 'package:flutter_habit/provider/UserProvider.dart';
- import 'package:flutter_habit/network/Repository.dart';
- import 'package:provider/provider.dart';
- class UserListTile extends StatefulWidget {
- final int? uid;
- final Widget? trailing;
- final Function? onPress;
- UserListTile({required this.uid, this.onPress, this.trailing});
- @override
- _UserListTileState createState() => _UserListTileState();
- }
- class _UserListTileState extends State<UserListTile> {
- List<int>? photo;
- Map? userInfo;
- int? coins;
- @override
- void initState() {
-
- super.initState();
- photo = null;
- userInfo = {};
- coins = -1;
- getData();
- }
- Future<void> getData() async {
- UserProvider userProvider =
- Provider.of<UserProvider>(context, listen: false);
- if (widget.uid == userProvider.uid) {
- userInfo!["userName"] = userProvider.userName;
- photo = userProvider.photo;
- coins = userProvider.coins;
- } else {
- userInfo = await Repository.getInstance()!.getUserInfo(widget.uid);
- setState(() {});
- coins = await Repository.getInstance()!.getCoin(widget.uid);
- setState(() {});
- photo = await Repository.getInstance()!.getPhoto(widget.uid);
- }
- setState(() {});
- }
- @override
- Widget build(BuildContext context) {
- double previewSize = 50;
- return ListTile(
- leading: photo == null || photo!.isEmpty
- ? Icon(
- Icons.account_circle,
- size: previewSize,
- color: Theme.of(context).unselectedWidgetColor,
- )
- : ClipOval(
- child: Image.memory(
- photo as Uint8List,
- width: previewSize,
- height: previewSize,
- ),
- ),
- title: userInfo == null
- ? Text(I18N.of("用户名"))
- : Text(
- userInfo!["userName"].toString(),
- style: widget.uid !=
- Provider.of<UserProvider>(context, listen: false).uid ? null : TextStyle(
- decoration: TextDecoration.underline,
- color: Theme.of(context).colorScheme.secondary,
- ),
- ),
- subtitle: Text("${I18N.of("金币")} : ${coins.toString()}"),
- trailing: widget.trailing ?? Icon(Icons.info_outline),
- onTap: Provider.of<UserProvider>(context, listen: false).token == null ? null: widget.onPress as void Function()?,
- );
- }
- }
|