Flutter - Как отобразить текст уценки в полоске - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь запустить виджет Markdown (package: flutter_markdown 0.2.0) внутри SliverList, но у меня есть некоторые проблемы.

В идеале я хотел бы выполнить виджет Markdown внутри виджета ExpandTile внутри Sliver, но сейчас я просто хочу решить проблему дочернего элемента Markdown для Sliver.

Код, который я публикую, вызывает у меня проблемы:

  • Я правильно вижу текст уценки, но приложение зависло (не могу прокрутить, ничего не могу сделать). У меня такое поведение при использовании виджета MarkdownBody

  • При использовании виджета Markdown появляется сообщение об ошибке:

I/flutter (31761): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter (31761): The following assertion was thrown during performResize():
I/flutter (31761): Vertical viewport was given unbounded height.
I/flutter (31761): Viewports expand in the scrolling direction to fill their container.In this case, a vertical
I/flutter (31761): viewport was given an unlimited amount of vertical space in which to expand. This situation
I/flutter (31761): typically happens when a scrollable widget is nested inside another scrollable widget.
I/flutter (31761): If this widget is always nested in a scrollable widget there is no need to use a viewport because
I/flutter (31761): there will always be enough vertical space for the children. In this case, consider using a Column
I/flutter (31761): instead. Otherwise, consider using the "shrinkWrap" property (or a ShrinkWrappingViewport) to size
I/flutter (31761): the height of the viewport to the sum of the heights of its children.
I/flutter (31761):
...

Это полный код моего примера:


import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart';

const String _markdownData = """# Markdown Example
Markdown allows you to easily include formatted text, images, and even formatted Dart code in your app.

## Styling
Style text as _italic_, __bold__, or `inline code`.

- Use bulleted lists
- To better clarify
- Your points

## Links
You can use [hyperlinks](hyperlink) in markdown

## Images

You can include images:

![Flutter logo](https://flutter.io/images/flutter-mark-square-100.png#100x100)

## Markdown widget

This is an example of how to create your own Markdown widget:

    new Markdown(data: 'Hello _world_!');

## Code blocks
Formatted Dart code looks really pretty too:

void main() {
  runApp(new MaterialApp(
    home: new Scaffold(
      body: new Markdown(data: markdownData)
    )
  ));
}

Enjoy!
""";

void main() {
  runApp(MaterialApp(
      title: "Markdown Demo",
      home: Scaffold(
          appBar: AppBar(title: const Text('Markdown Demo')),
          body: Container(
              child: CustomScrollView(slivers: <Widget>[
            SliverList(
              delegate:
                  SliverChildListDelegate([Markdown(data: _markdownData)]),
            )
          ])))));
}

РЕДАКТИРОВАТЬ: я решил проблему

Проблема была в этой строке кода:

![Flutter logo](https://flutter.io/images/flutter-mark-square-100.png#100x100)

Изображение не существует, и приложение останавливается.

1 Ответ

0 голосов
/ 04 июля 2019

Использовать SliverToBoxAdapter вместо SliverList

...