Flutter项目之设置页

目录:

1、实现效果图

2、实现流程

2.1、引入依赖

2.2、封装弹窗工具类

dart 复制代码
import 'package:fluttertoast/fluttertoast.dart';


class CommontToast {
  static showToast(String msg) {
    Fluttertoast.showToast(
        msg: msg,
        toastLength: Toast.LENGTH_SHORT,
        gravity: ToastGravity.CENTER,
        timeInSecForIosWeb: 1,
        fontSize: 16.0);
  }
}

2.3、设置页

dart 复制代码
import 'package:flutter/material.dart';
import 'package:flutter_haoke/scopoed_model/auth_model.dart';
import 'package:flutter_haoke/utils/common_toast.dart';
import 'package:flutter_haoke/utils/scopoed_mode_helper.dart';

class SettingPage extends StatelessWidget {
  const SettingPage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("设置")),
      body: TextButton(
          onPressed: () {
            //调用退出登录的逻辑
            ScopoedModelHelper.getModel<AuthModel>(context).logout();
            CommontToast.showToast("退出登录");
          },
          child: Text("退出登录")),
    );
  }
}

2.4、路由中注册设置页面

dart 复制代码
// 1.编写route文件 并编写routes基本结构
import 'package:fluro/fluro.dart';
import 'package:flutter/material.dart';
import 'package:flutter_haoke/loading.dart';
import 'package:flutter_haoke/pages/community_picker.dart';
import 'package:flutter_haoke/pages/home/index.dart';
import 'package:flutter_haoke/pages/loading.dart';
import 'package:flutter_haoke/pages/login.dart';
import 'package:flutter_haoke/pages/notfound.dart';
import 'package:flutter_haoke/pages/register.dart';
import 'package:flutter_haoke/pages/room_add/index.dart';
import 'package:flutter_haoke/pages/room_manager/index.dart';
import 'package:flutter_haoke/pages/roomdetail/index.dart';
import 'package:flutter_haoke/pages/setting.dart';

class Routes {
  // 2.定义路由名称
  static String home = '/';
  static String login = '/login';
  static String register = '/register';
  static String roomdetail = '/roomDetail/:roomId';
  //设置页面
  static String setting = '/setting';
  static String roommanager = '/roommanager';
  static String roomAdd = '/roomAdd';
  static String community = '/community';
  static String loading = '/loading';

  // 3.定义路由处理函数
  static Handler _homeHandel = Handler(
    handlerFunc: (context, parameters) {
      return HomePage();
    },
  );
  static Handler _loginHandel = Handler(
    handlerFunc: (context, parameters) {
      return LoginPage();
    },
  );
  static Handler _registerHandel = Handler(
    handlerFunc: (context, parameters) {
      return RegisterPage();
    },
  );
  //设置页面
  static Handler _settingHandel = Handler(
    handlerFunc: (context, parameters) {
      return SettingPage();
    },
  );
  static Handler _roommanagerHandel = Handler(
    handlerFunc: (context, parameters) {
      return RoomManagerPage();
    },
  );
  static Handler _roomdetailHandel = Handler(
    handlerFunc: (context, parameters) {
      return RoomDetailPage(
        roomId: parameters["roomId"]![0],
      );
    },
  );
  static Handler _notfoundHandel = Handler(
    handlerFunc: (context, parameters) {
      return NotFoundPage();
    },
  );

  static Handler _roomAddHandel = Handler(
    handlerFunc: (context, parameters) {
      return RoomAddPage();
    },
  );
  static Handler _communityHandel = Handler(
    handlerFunc: (context, parameters) {
      return CommunityPickerPage();
    },
  );
  static Handler _loadingHandel = Handler(
    handlerFunc: (context, parameters) {
      return LoadingPage();
    },
  );
  // 4.编写函数 configureRoutes 关联路由名称和处理函数
  static void configureRoutes(FluroRouter router) {
    router.define(home, handler: _homeHandel);
    router.define(login, handler: _loginHandel);
    router.define(register, handler: _registerHandel);
    router.define(roomdetail, handler: _roomdetailHandel);
    //设置页面
    router.define(setting, handler: _settingHandel);
    router.define(roommanager, handler: _roommanagerHandel);
    router.define(roomAdd, handler: _roomAddHandel);
    router.define(community, handler: _communityHandel);
    router.define(loading, handler: _loadingHandel);
    router.notFoundHandler = _notfoundHandel;
  }
}
相关推荐
山河木马3 小时前
渲染管线-计算得到gl_Position(顶点着色器)之后续GPU流程
javascript·webgl·图形学
竹林8183 小时前
用 The Graph 查询链上数据实战:从手搓 RPC 到 Subgraph,我的 NFT 项目数据加载快了 10 倍
前端·javascript
杉氧4 小时前
Navigation Compose 深度实践:如何优雅地串联起你的全栈 App?
android·架构·android jetpack
kyriewen6 小时前
别再每次都 Google 了:我整理了前端日常最常踩的 10 个 Git 坑,附速查表
前端·javascript·git
SmartBoyW7 小时前
深入ECMAScript规范:彻底搞懂JS隐式类型转换与底层ToPrimitive机制
前端·javascript
用户852495071847 小时前
解密 JavaScript 中的 this:谁才是真正的调用者?
javascript·面试
Heo7 小时前
Vite进阶用法详解
前端·javascript·面试
雨白7 小时前
指针与数组的核心机制
android
铁皮饭盒9 小时前
Next.js 风格路由内置?Bun FileSystemRouter 凭啥这么香
javascript
小林ixn10 小时前
别再背八股了!从 5 个真实场景彻底搞懂 JavaScript 的 this
javascript