Flutter - как заменить панель вкладок на формат год-месяц - PullRequest
0 голосов
/ 07 мая 2020

enter image description here

Привет ~ Я хочу заменить несколько имен панели вкладок на формат даты «гггг-месяц». Вот мой код, ниже которого я использовал List для отображения нескольких имен панели вкладок. Кто-нибудь, кто мог бы решить мою проблему? Пожалуйста, обратитесь к моему коду ниже :)

import 'package:flutter/material.dart';
import 'package:everyday/widgets/image_grid.dart';
import 'package:intl/intl.dart';


class MyTabbedPage extends StatefulWidget {
  const MyTabbedPage({ Key key }) : super(key: key);
  @override
  _MyTabbedPageState createState() => _MyTabbedPageState();
}

class _MyTabbedPageState extends State<MyTabbedPage> with SingleTickerProviderStateMixin {
  final List<Tab> myTabs = List.generate(
      10, (index) => Tab(text: 'Tab $index'));

  TabController _tabController;

  @override
  void initState() {
    super.initState();
    _tabController = TabController(vsync: this, length: myTabs.length);
  }

  @override
  void dispose() {
    _tabController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        bottom: TabBar(
          controller: _tabController,
          tabs: myTabs,
          isScrollable: true,
        ),
      ),
      body: TabBarView(
        controller: _tabController,
        children: myTabs.map((Tab tab) {
          final String label = tab.text.toLowerCase();
          return Center(
            child: ImageGrid(),
          );
        }).toList(),
      ),
    );
  }
}

1 Ответ

0 голосов
/ 07 мая 2020

Место, где вы назначаете имя вкладки:

final List<Tab> myTabs = List.generate(
      10, (index) => Tab(text: 'Tab $index'));

Вам просто нужно сгенерировать текст на основе даты (которая, как я полагаю, сегодня)

EDIT2

Я пробовал этот код, и у меня он отлично работает. Пакет intl необходим для функции DateFormat

import 'package:intl/intl.dart';
final List<Tab> myTabs = List.generate(
      10, (index) {
        var now = DateTime.now();
        var date = DateTime(now.year, now.month + index, now.day);
        String dateDisplay = DateFormat('yMMM').format(date);
        return Tab(text: dateDisplay);
      }
      );

Я уверен, что есть более эффективный способ (определить now снаружи и использовать его в .generate, но он отлично работает.

...