flutter 保持页面状态

Posted loaderman

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flutter 保持页面状态相关的知识,希望对你有一定的参考价值。

import ‘package:flutter/material.dart‘;

import ‘KeepAliveDemo.dart‘;

void main() => runApp(MyApp());

class MyApp extends StatelessWidget 

  @override
  Widget build(BuildContext context) 
    return MaterialApp(
      title: ‘Flutter Demo‘,
      theme: ThemeData(
        primarySwatch: Colors.green,  //定义主题风格    primarySwatch
      ),
      home: KeepAliveDemo(),
    );
  

import ‘package:flutter/material.dart‘;
import ‘package:flutter_app/MyHomePage.dart‘;
class KeepAliveDemo extends StatefulWidget 
  _KeepAliveDemoState createState() => _KeepAliveDemoState();

/*
with是dart的关键字,意思是混入的意思,
就是说可以将一个或者多个类的功能添加到自己的类无需继承这些类,
避免多重继承导致的问题。
SingleTickerProviderStateMixin 主要是我们初始化TabController时,
需要用到vsync ,垂直属性,然后传递this
*/
class _KeepAliveDemoState extends State<KeepAliveDemo> with SingleTickerProviderStateMixin 
  TabController _controller;

  @override
  void initState()
    super.initState();
    _controller = TabController(length:3, vsync: this);
  

  //重写被释放的方法,只释放TabController
  @override
  void dispose()
    _controller.dispose();
    super.dispose();
  

  @override
  Widget build(BuildContext context) 
    return Scaffold(
        appBar:AppBar(
            title:Text(‘Keep Alive Demo‘),
            bottom:TabBar(
              controller: _controller,
              tabs:[
                Tab(icon:Icon(Icons.directions_car)),
                Tab(icon:Icon(Icons.directions_transit)),
                Tab(icon:Icon(Icons.directions_bike)),
              ],
            )
        ),
        body:TabBarView(
          controller: _controller,
          children: <Widget>[
            MyHomePage(),
            MyHomePage(),
            MyHomePage()
          ],
        )
    );
  

效果:

技术图片

以上是关于flutter 保持页面状态的主要内容,如果未能解决你的问题,请参考以下文章

flutter-保持页面状态(切换页面,页面还在原来的位置,不重新加载接口)

Flutter底部导航栏BottomNavigationBar页面状态保持解决方案

Flutter PageView 自由控制状态保持

flutter跳转原生页面后的穿透问题

flutter 状态保持之provide

Flutter google 登录 保持登录状态