在 Flutter 上实现 TextSwitcher

Posted

技术标签:

【中文标题】在 Flutter 上实现 TextSwitcher【英文标题】:Implementing a TextSwitcher on Flutter 【发布时间】:2017-10-26 12:57:52 【问题描述】:

我没有在 Flutter 上找到任何 TextSwitcher。在 android 上,TextSwitcher 通过添加淡出/淡入动画切换文本。在 Flutter 上有实现吗?我需要从头开始吗?如果是这样,您将如何实施?

这是一个参考: https://developer.android.com/reference/android/widget/TextSwitcher.html

【问题讨论】:

【参考方案1】:

Flutter 的 PageView 类提供与 Android TextSwitcher 大致相同的功能。

import 'dart:collection';
import 'package:flutter/scheduler.dart';
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_database/firebase_database.dart';
import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter/foundation.dart';

void main() 
  runApp(new MyApp());


class MyApp extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return new MaterialApp(
      title: 'Flutter Demo',
      theme: new ThemeData(
        primarySwatch: Colors.orange,
      ),
      home: new MyHomePage(),
    );
  


class MyHomePage extends StatefulWidget 
  @override
  State createState() => new MyHomePageState();


class MyHomePageState extends State<MyHomePage> 

  PageController _controller = new PageController();

  static const List<String> _kStrings = const <String>[
    'What is your name?',
    'I am a developer.',
    'What are you doing?',
    'Etc. etc...',
  ];

  @override
  Widget build(BuildContext context) 
    return new Scaffold(
      appBar: new AppBar(
        title: new Text('Text Switcher Demo'),
      ),
      floatingActionButton: new FloatingActionButton(
        child: new Icon(Icons.navigate_next),
        onPressed: () 
          Duration duration = const Duration(milliseconds: 300);
          Curve curve = Curves.easeOut;
          if (_controller.page == _kStrings.length - 1) 
            _controller.animateToPage(0, duration: duration, curve: curve);
           else 
            _controller.nextPage(duration: duration, curve: curve);
          
        ,
      ),
      body: new PageView(
        controller: _controller,
        children: _kStrings.map((text) 
          return new Center(
            child: new Text(
              text,
              textAlign: TextAlign.center,
              style: Theme.of(context).textTheme.display2
            ),
          );
        ).toList(),
      ),
    );
  

【讨论】:

太棒了!谢谢!

以上是关于在 Flutter 上实现 TextSwitcher的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 上实现 BLoC 模式的 TDD

Flutter/Firestore - 在流构建器中的动态列表视图上实现“分页”

如何在flutter中将另一个包中的类或函数调用到另一个包?

Flutter Chart

Flutter 第四天

Firebase,Flutter - 不需要注册页面