flutter中單例的寫法
class AccountManager {
factory AccountManager() => _instance ??= AccountManager._();
/// 銷燬單例
static void destroyInstance() => _instance = null;
}
flutter 頁面路由
利用GetX框架來實現
get: ^4.6.5
CoinRankPage 爲具體的頁面實現
點擊查看代碼
abstract class Routes {
Routes._();
static const main = "/main";
///頁面合集
static final routePage = [
GetPage(
name: coinRink,
page: () => const CoinRankPage(),
binding: CoinRankBinding(),
),
]
}
刷新和加載更多的實現
依賴框架
pull_to_refresh: ^2.0.0
頭部刷新和底部加載更多widget封裝
點擊查看代碼
import 'package:flutter/cupertino.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
/// 頭部刷新控件
class RefreshHeader extends StatelessWidget {
const RefreshHeader({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return const WaterDropHeader(
complete: Center(
child: Text("下拉刷新完成"),
),
);
}
}
/// 底部加載更多控件
class RefreshFooter extends StatelessWidget {
const RefreshFooter({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return CustomFooter(
builder: (context, mode) {
Widget body;
if (mode == LoadStatus.idle) {
body = const Text("上拉加載");
} else if (mode == LoadStatus.loading) {
body = const CupertinoActivityIndicator();
} else if (mode == LoadStatus.failed) {
body = const Text("加載失敗!點擊重試!");
} else if (mode == LoadStatus.canLoading) {
body = const Text("鬆手,加載更多!");
} else {
body = const Text("沒有更多數據了!");
}
return Center(child: body);
},
);
}
}