Hiển thị SVG Flutter


90

Tôi đã thử thêm một hình ảnh có nguồn SVG vào ứng dụng rung của mình.

new AssetImage("assets/images/candle.svg"))

Nhưng tôi không nhận được bất kỳ phản hồi trực quan nào. Làm cách nào để hiển thị ảnh SVG trong Flutter?


4
hãy thử sử dụng đơn giản để sử dụng flutter_svg 0.14.0 gói nó hoạt động như quyến rũ biết thêm đây pub.dev/packages/flutter_svg , tất cả nhờ vào này anh chàng github.com/dnfield người chuyển Logic svg vẽ của chrome để phi tiêu
maheshmnj

Câu trả lời:


63

Flutter hiện không hỗ trợ SVG. Theo dõi vấn đề 1831 để cập nhật.

Nếu bạn thực sự cần vẽ vector, bạn có thể xem tiện ích Flutter Logo như một ví dụ về cách vẽ bằng cách sử dụng CanvasAPI hoặc sắp xếp hình ảnh của bạn ở phía gốc và chuyển nó đến Flutter dưới dạng bitmap, nhưng hiện tại cách tốt nhất có lẽ là nhúng các hình ảnh tài sản được phân giải có độ phân giải cao.


Ngoài ra, nếu bạn không cần màu sắc, bạn luôn có thể định tuyến phông chữ theo cách của gói Biểu tượng.
prodaea

tốt sau khi tất cả anh ta cần phải chỉ đơn giản là làm cho một hình ảnh svg bất kỳ thư viện svg có thể làm như thế này pub.dev/packages/flutter_svg
maheshmnj

vấn đề được mở từ ngày 13 tháng 2 năm 2016. chúng ta cần đợi bao lâu?
BloodLoss

@BloodLoss hãy xem câu trả lời của Dan Field. flutter_svgGói người dùng
kovalyovi

71

Phông chữ là một lựa chọn tuyệt vời cho nhiều trường hợp.

Tôi đang làm việc trên một thư viện để hiển thị SVG trên canvas, có sẵn tại đây: https://github.com/dnfield/flutter_svg

API kể từ bây giờ sẽ trông giống như

new SvgPicture.asset('asset_name.svg')

để hiển thị asset_name.svg (có kích thước bằng với cha của nó, ví dụ: a SizedBox). Bạn cũng có thể chỉ định một colorblendModeđể nhuộm màu nội dung ..

Nó hiện đã có trên pub và hoạt động với phiên bản Flutter tối thiểu là 0.3.6. Nó xử lý một loạt các trường hợp nhưng không phải tất cả mọi thứ - hãy xem repo GitHub để biết các bản cập nhật và các vấn đề về tệp.

Vấn đề GitHub ban đầu do Colin Jackson tham chiếu thực sự không có ý nghĩa chủ yếu tập trung vào SVG trong Flutter. Tôi đã mở một vấn đề khác ở đây cho điều đó: https://github.com/flutter/flutter/issues/15501


Một chút lạc đề nhưng điều này có hỗ trợ iOS không? Theo như tôi biết, iOS hỗ trợ vectơ ở định dạng PDF vì vậy tôi chỉ tò mò liệu điều này có thể được sử dụng để hiển thị vectơ trên iOS hay không
MRainzo

3
Nó sẽ hoạt động trên bất kỳ nền tảng nào mà Flutter hỗ trợ. Tất cả đều được viết bằng Dart bằng Canvascác phương pháp.
Dan Field

1
tại sao doesnt nó hỗ trợ ổn định rung mới nhất thay vì xem trước
minigeek

Xin chào Dan, Bạn cũng có thể thêm hỗ trợ cho - dart: svg library - api.dart.dev/stable/2.9.2/dart-svg/dart-svg-library.html ? Flaming có hỗ trợ dart2 không? Tôi muốn có nhiều SVGElements tất cả được kết hợp thành một chuỗi lớn được tuần tự hóa và sau đó sử dụng thư viện của bạn để hiển thị SVG
abhijat_saxena

dart: svg được sử dụng với HTML và dart2js. Nó rất khác so với điều này.
Dan Field

25

Các nhà phát triển từ cộng đồng Flutter đã tạo một lib để xử lý các tệp svg. Chúng ta có thể sử dụng nó như

new SvgPicture.asset(
  'assets/images/candle.svg',
  height: 20.0,
  width: 20.0,
  allowDrawingOutsideViewBox: true,
),

Tôi đã tìm thấy một ví dụ nhỏ về việc triển khai SVG ở đây .


5
Just FYI - đây không phải là một plugin chính thức / bên thứ nhất. Điều đó nói rằng, nó sẽ hỗ trợ rất nhiều trường hợp sử dụng phổ biến.
Dan Field

21

Công việc hiện tại là sử dụng phông chữ

https://icomoon.io/

  fonts:
   - family: icomoon
     fonts:
       - asset: assets/fonts/icomoon.ttf

Useage

  static const IconData TabBarHome= const IconData(0xe906, fontFamily: 'icomoon');
  static const IconData TabBarExplore= const IconData(0xe902, fontFamily: 'icomoon');

Thay thế ### ví dụ: (906)


9

Bạn có thể làm theo các bước dưới đây
- truy cập http://fluttericon.com
- tải lên các biểu tượng SVG của bạn
- nhấp vào nút tải xuống
- bạn sẽ nhận được hai tệp
1.
tệp phông chữ iconname.dart 2. \ iconname.ttf
- sử dụng tệp này trong nháy mắt & import iconname.dart


3

Bạn có thể sử dụng flare để tạo hoạt ảnh và chỉ cần nhập .flr làm nội dung

import 'package:flare_flutter/flare_actor.dart';
class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => new _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return new FlareActor("assets/Filip.flr", alignment:Alignment.center, fit:BoxFit.contain, animation:"idle");
  }
}

truy cập flare_flutter https://pub.dev/packages/flare_flutter


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.