TabBarView 渲染
时间: 2023-09-16 22:12:31 浏览: 140
TabBarView 是一个常见的 Flutter widget,它提供了一个可以滑动的标签栏以及对应的子页面,常用于实现底部导航栏或者顶部导航栏。
TabBarView 的渲染过程相对简单,它会根据当前显示的标签页来创建对应的子页面,并将其渲染到屏幕上。当用户切换标签页时,TabBarView 会销毁之前的子页面,并创建新的子页面进行渲染。
具体来说,TabBarView 会在内部维护一个 PageController 对象,用于控制子页面的滚动和切换。当用户切换标签页时,TabBarView 会使用 PageController 跳转到对应的页面,并调用对应的 StatefulWidget 的 createState 方法创建新的子页面,并将其渲染到屏幕上。
需要注意的是,TabBarView 只负责渲染子页面,不负责创建标签栏。创建标签栏通常需要使用 TabBar 或者 BottomNavigationBar widget。
相关问题
有一串json数据【租凭,购买两个tabber】 return TabBarView( controller: _tabController, children: [ Expanded(child:Text("ng"),), Expanded(child:Text("ng"),) ] );在这里我如何判断数据你一个并且渲染页面?代码?
假设你已经将这个 JSON 数据解析成了一个 Dart 对象,你可以使用条件语句判断该对象中是否包含租凭或购买的数据。如果包含,则渲染对应的 TabBarView。
以下是示例代码:
```dart
import 'package:flutter/material.dart';
import 'dart:convert';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
String jsonData = '{"tabType": "purchase"}'; // 假设这是从服务器获取的 JSON 数据
Map<String, dynamic> data = jsonDecode(jsonData);
return MaterialApp(
title: 'TabBar Demo',
home: data['tabType'] == 'rent' ? RentTabBarView() : PurchaseTabBarView(), // 根据数据判断渲染哪个 TabBarView
);
}
}
class RentTabBarView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Rent Tab'),
),
body: TabBarView(
children: [
Expanded(
child: Text('Rent 1'),
),
Expanded(
child: Text('Rent 2'),
),
],
),
);
}
}
class PurchaseTabBarView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Purchase Tab'),
),
body: TabBarView(
children: [
Expanded(
child: Text('Purchase 1'),
),
Expanded(
child: Text('Purchase 2'),
),
],
),
);
}
}
```
在上面的代码中,我们根据 JSON 数据中的 `tabType` 属性来判断渲染哪个 TabBarView。如果 `tabType` 为 `rent`,则渲染 `RentTabBarView`;如果为 `purchase`,则渲染 `PurchaseTabBarView`。
阅读全文