การแสดงผล SVG แบบกระพือปีก


92

ฉันพยายามเพิ่มรูปภาพที่มีแหล่ง SVG ลงในแอปพลิเคชัน Flutter ของฉัน

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

แต่ฉันไม่ได้รับความคิดเห็นใด ๆ ฉันจะแสดงภาพ SVG ใน Flutter ได้อย่างไร


4
ลองใช้flutter_svg 0.14.0 แพ็คเกจที่ใช้งานง่ายมันใช้งานได้ดีเหมือนมีเสน่ห์ข้อมูลเพิ่มเติมที่นี่pub.dev/packages/flutter_svgขอบคุณผู้ชายคนนี้github.com/dnfieldที่พอร์ตตรรกะการเรนเดอร์ svg ของโครเมี่ยมเป็นโผ
maheshmnj

คำตอบ:


65

ขณะนี้ Flutter ไม่รองรับ SVG ติดตามการอัปเดตฉบับ 1831

หากคุณต้องการการวาดภาพเวกเตอร์อย่างแน่นอนคุณสามารถดูวิดเจ็ต Flutter Logoเป็นตัวอย่างของวิธีการวาดโดยใช้CanvasAPI หรือแรสเตอร์รูปภาพของคุณในด้านเนทีฟและส่งต่อไปยัง Flutter เป็นบิตแมป แต่สำหรับตอนนี้ทางออกที่ดีที่สุดของคุณคือ ฝังรูปภาพเนื้อหาแรสเตอร์ที่มีความละเอียดสูง


นอกจากนี้หากคุณไม่ต้องการสีคุณสามารถกำหนดเส้นทางแบบอักษรตามที่แพ็กเกจไอคอนทำ
prodaea

หลังจากทั้งหมดที่เขาต้องการเพียงแค่แสดงภาพ svg ไลบรารี svg ใด ๆ ก็สามารถทำได้เช่นนี้pub.dev/packages/flutter_svg
maheshmnj

ฉบับนี้เปิดให้บริการตั้งแต่ 13 ก.พ. 2559 ต้องรอนานแค่ไหน?
BloodLoss

@BloodLoss ดูคำตอบของแดนฟิลด์ flutter_svgแพ็คเกจผู้ใช้
kovalyovi

75

แบบอักษรเป็นตัวเลือกที่ดีสำหรับหลาย ๆ กรณี

ฉันทำงานเกี่ยวกับไลบรารีเพื่อเรนเดอร์ SVG บนผืนผ้าใบอยู่ที่นี่: https://github.com/dnfield/flutter_svg

API ณ ตอนนี้จะมีลักษณะดังนี้

new SvgPicture.asset('asset_name.svg')

เพื่อแสดงผล asset_name.svg (ขนาดเป็นพาเรนต์เช่นกSizedBox) คุณยังสามารถระบุcolorและblendModeสำหรับการย้อมสีเนื้อหา ..

ตอนนี้มีให้บริการในผับและใช้งานได้กับ Flutter เวอร์ชัน 0.3.6 เป็นอย่างต่ำ จัดการได้หลายกรณี แต่ไม่ใช่ทุกอย่าง - ดูที่ GitHub repo สำหรับการอัปเดตและไฟล์ปัญหา

ปัญหา GitHub ดั้งเดิมที่โคลินแจ็คสันอ้างถึงนั้นไม่ได้หมายถึงการมุ่งเน้นไปที่ SVG ใน Flutter เป็นหลัก ฉันเปิดปัญหาอื่นที่นี่สำหรับสิ่งนั้น: https://github.com/flutter/flutter/issues/15501


นอกประเด็นเล็กน้อย แต่สิ่งนี้รองรับ iOS หรือไม่? เท่าที่ฉันรู้ iOS รองรับเวกเตอร์ในรูปแบบ PDF ดังนั้นฉันแค่อยากรู้ว่าสามารถใช้สำหรับการแสดงผลเวกเตอร์บน iOS ได้หรือไม่
MRainzo

3
ควรทำงานบนแพลตฟอร์มใด ๆ ที่ Flutter รองรับ ทั้งหมดนี้เขียนใน Dart โดยใช้Canvasวิธีการ
แดนฟิลด์

1
เหตุใดจึงไม่รองรับการกระพือปีกล่าสุดแทนที่จะดูตัวอย่าง
minigeek

สวัสดี Dan คุณสามารถเพิ่มการสนับสนุนสำหรับ - dart: svg library - api.dart.dev/stable/2.9.2/dart-svg/dart-svg-library.html ได้หรือไม่ Flutter รองรับ dart2 ไหม ฉันต้องการให้ SVGElements หลายรายการรวมกันเป็นสตริงซีเรียลไลซ์ขนาดใหญ่หนึ่งสตริงจากนั้นใช้ไลบรารีของคุณเพื่อแสดง SVG
abhijat_saxena

dart: svg ใช้กับ HTML และ dart2js มันแตกต่างกว่านี้มาก
Dan Field

25

นักพัฒนาจากชุมชน Flutter ได้สร้าง lib เพื่อจัดการไฟล์ svg เราสามารถใช้เป็น

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

ผมพบว่าเป็นตัวอย่างเล็ก ๆ ของ SVG การดำเนินงานที่นี่


5
FYI - นี่ไม่ใช่ปลั๊กอินอย่างเป็นทางการ / บุคคลที่หนึ่ง ที่กล่าวมาควรรองรับกรณีการใช้งานทั่วไปจำนวนมาก
Dan Field

21

วิธีแก้ไขสำหรับตอนนี้คือใช้แบบอักษร

https://icomoon.io/

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

การใช้งาน

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

แทนที่ ### เช่น (906)


ฉันจะใช้สิ่งนี้ได้อย่างไร? สมมติว่าฉันมีไฟล์ svg ใน asset / svg / mysvg.svg ฉันไม่สามารถแทนที่เลขฐานสิบหกด้วยพา ธ ได้ อาร์กิวเมนต์ที่ 1 คือ int
FrontMobe

9

คุณสามารถทำตามขั้นตอนด้านล่าง
- ไปที่http://fluttericon.com
- อัปโหลดไอคอน SVG ของคุณ
- คลิกที่ปุ่มดาวน์โหลด
- คุณจะได้รับสองไฟล์
1. iconname.dart
2. ไฟล์ฟอนต์ iconname.ttf
- ใช้ไฟล์นี้ในการกระพือ & นำเข้า iconname.dart


3

คุณสามารถใช้ flare เพื่อสร้างภาพเคลื่อนไหวและนำเข้า. flr เป็นเนื้อหาได้

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");
  }
}

ไปที่ flare_flutter https://pub.dev/packages/flare_flutter


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.