在Flutter中创建类似于github语言栏的栏

问题描述

我需要实现类似这样的东西。

bar with multiple colors

它基本上是一种具有多种颜色的条,每种颜色都有一个长度。另外,可能会在每种颜色上添加文本。

如何在扑朔迷离中实现呢?

解决方法

简单的方法是使用支持水平堆叠条形图的图表库。

更困难的方法是使用行和扩展的小部件创建自己的小部件。 像这样:

        Row(
          children: <Widget>[
            Expanded(
              flex: 2,child: Container(
                color: Colors.amber,height: 100,),Expanded(
              flex: 2,child: Container(
                color: Colors.red,Expanded(
              flex: 1,child: Container(
                color: Colors.green,],

https://api.flutter.dev/flutter/widgets/Expanded-class.html

,

您要使用Flexible小部件:

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',home: Scaffold(
        body: SafeArea(
            child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,children: [
            Row(
              children: [
                Flexible(
                  flex: 3,// 30%
                  child: Container(
                    color: Colors.green,height: 20,Flexible(
                  flex: 2,// 20%
                  child: Container(
                    color: Colors.yellow,Flexible(
                  flex: 5,// 50%
                  child: Container(
                    color: Colors.cyan,)),);
  }
}

这是下面的样子:

Demo