main.dart
import 'package:flutter/material.dart';
import 'package:scaffold_route/tabview_route1.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Color(0xff80180d)),
useMaterial3: true,
),
home: TabViewRoute1(),
);
}
}
tabview_route1.dart
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class TabViewRoute1 extends StatefulWidget {
@override
State<TabViewRoute1> createState() => _TabViewRoute1State();
}
class _TabViewRoute1State extends State<TabViewRoute1> with SingleTickerProviderStateMixin, AutomaticKeepAliveClientMixin {
late TabController _tabController;
List tabs = ["新闻","历史","图片"];
@override
void initState(){
super.initState();
_tabController = TabController(length: tabs.length, vsync: this);
}
@override
bool get wantKeepAlive => true; // 重写 wantKeepAlive 方法,返回 true
@override
Widget build(BuildContext context) {
super.build(context); // 调用 super.build(context) 来确保状态保持生效
return Scaffold(
appBar: AppBar(
title: Text("我的第一个flutter"),
bottom: TabBar(
controller: _tabController,
tabs: tabs.map((e) => Tab(text: e)).toList(),
),
),
body: TabBarView(
controller: _tabController,
children: tabs.map((e) {
return Container(
alignment: Alignment.center,
child: Text(e, textScaleFactor: 5),
);
}).toList(),
),
);
}
@override
void dispose() {
_tabController.dispose();
super.dispose();
}
}